解答疑惑
Unity到底是C#引擎还是C++引擎?
答案是:Unity本质上是一个C++引擎,C#只是脚本层。
为什么Unity选择这种架构?
早期游戏引擎几乎都是全部C++实现的
因为:
- 性能高:例如: Renderer Physics Animation 每秒执行几百万次。 必须用C++。
- 跨平台方便:Unity需要支持: Windows Mac Linux Android iOS PS5 Xbox Switch 底层平台接口基本都是: DirectX Vulkan Metal OpenGL 所以必须C++。
- 开发效率高:
csharp
class Player : public Actor
{
};
学习成本太高。
Unity希望:
public class Player : MonoBehaviour
{
}
几分钟就能上手。
因此:
引擎 = C++
业务 = C#
其他引擎的架构方式?
自研引擎
与Unity引擎架构方式类似
- 引擎层
- 业务层
自研引擎C++实现,业务用Python或者Lua/TypeScripts
有些大厂其实是魔改虚幻引擎、Unity、Cocos等知名的引擎
虚幻引擎
- 引擎层:C++
- 业务层:Lua / TypeScripts