从我所看到的,核心问题不是C ++或Unity3D,而是您需要一个高级解决方案还是一个低级解决方案。
一种低级解决方案是使您难以处理输入,管理内存或加载模型的过程。一个高级解决方案是您得到一个简洁的软件包,例如Unity3D。
对我而言,是否使用Unity3D(或任何其他游戏引擎)或C ++取决于游戏和项目的目标。
关于Unity3D的好处是,它仍然使用脚本语言来反映现实世界的开发(C#或JavaScript)。您学习的OOP和软件工程概念(单例,立面,状态机,装饰器,构图)可以在Unity3D中应用。它有助于处理诸如资源管理,场景图,模型加载,渲染,场景保存等的切块程序。更好的是,如果有Unity3D不提供的功能,您可以做DLL编码。
C ++会留在哪里?C ++是一种语言,在C ++中您可以在Unity3D中完成许多编程概念,没有内存管理或模板(例如,使用Unity 3.2,语言规范已进行了改进,以涵盖闭包)。
因此,正如我已经说过的,它并不是真正的C ++与Unity3D。与Unity3D相比,它更多的是“ C ++加库/ SDK或滚动您自己的引擎”。这取决于您的目标。对于高端游戏或需要控制渲染管线或输入的游戏,您可能需要使用C ++以及允许您在后台混乱的引擎。如果没有,我将Unity3D作为3D游戏的默认选择。
但是,Unity3d的知识并不是真正的经验,而是一个开始学习游戏开发总体过程的好地方。例如,您可能需要一个学期的学习才能编写渲染器并在OpenGL中加载模型,以及基本的场景图和输入。您可以在不到一天的时间内在Unity3D中完成该任务。