|
原文【download link】链接: http://www.rioki.org/2014/03/25/ue4-cpp-blueprints.html
在UT2014 Challenge中, 我需要做的第一个艰难的决定:我该用C++还是Blueprints来处理游戏的逻辑
看下C++版的FPS范例, 看起来非常清晰明了, 你可以在其中找到所有在UE2和UE3中UScirpt的字符. Pawn, Character, Controller, GameMode 和 Game 类, 只是这次是在C++中. 所以如果你对之前版本的引擎非常了解的话, 在这里你会很快熟悉上手.
UE4一个非常重要的功能就是编辑器/游戏引擎会无缝重读被重新编译过的文件. 这意味着你可以在代码执行中对其进行修改. 说实话我不知道它是怎么运作的, 但是这太NB了. (我能想到一些方案, 但我不知道他们究竟在引擎里做了什么)
我认为C++最大的特征就是不需要对引擎做任何改动. 你可以调用任何你需要的第三方库. 尽管对于我当前的项目我想不到例子, 但还是有很多有趣的事可以做. 例如你可以整合实时仿真来前端化UE的训练程序. 可以整合一些Epic没有想到的外围功能. 可以将引擎和其他从来没有被整合的程序整合到一起, 例如进程管理器.
另一方面的Blueprints, 是整合到引擎的一部分. 即使你使用C++, 也需要用到Blueprints. 如果你能轻松的在C++和Blueprints中实现逻辑, 那么C++的额外开销就是毫无意义了. 尽管在UE4中C++的响应时间非常低, 但Blueprints要更小一些. 稍做修改就可以测试出区别, 即使在保存Blueprint之前.
混用C++和Blueprints会造成一些混乱. 我要在C++中设置数值, 然后在Blueprint初始设置或在Blueprint创建脚本吗 这种混合状态的最佳思路通常并不清晰, 当你仅使用Blueprints时则会更清晰明确. 它们只是变量, 如果你想从外部修改它们的话, 只要勾选个选项就可以了.
至于我暂时会采取以下的办法: 使用Blueprints直到我撞上问题. 说实话我想这不会在我的项目案例中出现.
我的方案是基本是用C++来实现的,但最末的子类肯定是用类蓝图继承一下,方便调节参数,仅此而已。比如在C++中实现 MeleeWeapon 类,在类蓝图中继承为 Sword,指定mesh,调节碰撞盒组件大小位置等。逻辑基本不在蓝图中实现。
|
|