UE蓝图开发最佳实践
本文最后更新于:2024年12月27日 下午
命名相关
变量命名规则
减少冗余信息
函数命名规则
蓝图如何保持整洁
避免过长的蓝图逻辑,屏幕长度有限
事件左对齐
保证更改逻辑的时候不会改错
通过Re-route来减少连线
避免错乱事件连线
不要想到一个事件就立马create出来
重用Getter或者Pure节点
清晰的返回节点
越复杂的函数为什么return,为什么early return需要写清楚
Select节点
Text替代String
蓝图注释规则
分不同的颜色,规则不一样
注释的细节
每个事件都编写注释
Sequence的每一段都写注释
把长的拆分成sequence也可以做
为复杂的逻辑写注释
为复杂的函数返回写注释
如何创建稳固更新的生产线?
不是一开始就设计好,而是在项目进行到一定阶段在解耦。
不要复制黏贴,而是作为抽离成function
性能问题
每次冷启动,可以通过log(Unreal Inside)来观察哪里加载的久。
以及每次添加新节点的时间
优化方法
减少不必要的Cast,特别是复杂蓝图类的cast。
用Gameplay Tag和blueprint Interface
活用命名空间
可以规定某个蓝图这是哪种玩法会用到的,这样就可以减少加载
减少Hard Reference
因为每个hard Reference都会加载在内存里面,会影响包体大小,考虑用Tag或者Soft Reference来替换
热更新
一个比较好的方式是,脚本语言不去改蓝图function的实现,然后划分好哪些变量会修改,这样也可以作为一个新的category来分类
蓝图审核
可以持续更新一个Best Practice文档
编辑器拓展
Assest Action Utility(这里没太听懂,到时候学习一下)
如何平衡蓝图和C++?
不用过早优化
因为变化可能很快
有安全性问题的时候可以考虑转
比如拿的很多信息不是在本地,而是要通过服务器来request,这种可能放在C++核心类比较好
直接重定向
在C++里面写一个MigrateProperty这样一个函数,可以把哪些变量,CDO准确的转化过来