1.用一个Controller(Actor)去实现一类功能,而不是直接在类中实现,(比如关于摄像机的功能,用一个Controller(Actor)去管理摄像机类,而不是在摄像机类中实现各种功能)好处:方便管理,拓展。
2.多用抽象方法,而不是具体实现。如,控制汽车,飞机,船的运动,这三类都属于交通工具,可以用接口实现运动,再在具体的交通工具具体实现运动。好处,减少了重复的代码,提高了复用性(以后如果有另外一种交通工具,是增加接口实现,而不是更改原有的代码)。
3.点击事件,事件开始等不能被调用的事件后最好是调用其他事件,而不是直接写程序。好处:可以在其他地方调用该类事件。
4.在UMG中尽量调用,而不是实现。
5.接口的性能消耗要小于Cast to
6.取模(%)可以让整数累加进行循环,长度为5, 5%5=0,重新循环。
7.多用函数,事件,宏提高代码的复用性
8.多用函数,折叠到节点,sequence,减少代码长度
9.for循环是无法延时的,delay,timeline无法在for循环中使用,但是可以用在宏中加入delay,做一个可以延时的for循环。(将for循环代码,复制到宏中,在加入delay)
10.在Event BeingPlay中做依赖于另外一个Evevt BeingPlay的逻辑时,要注意先后顺序,因此,一般不这样做,将Event BeingPlay的逻辑用函数代替,在另外一个Evevt BeingPlay时调用改函数。
11.可以用Select 代替 Brache,保持界面整洁
12.当有些资源不是实时加载的,可以用软应用代替硬引用
硬引用在资产加载时的逻辑:当A资产持有B资产的硬引用时,A资产被加载到内存中时,B资产也会被加载到内存中。
软引用在资产加载时的逻辑:当A资产持有B资产的软引用是,A资产被加载到内存中时,B资产不会被加载。
硬引用:
使用硬引用加载方式,当对象A引用对象B,会导致对象B直接被加载到内存当中。若对象B同时硬引用了对象C,那么对象C也会被加载到内存中,这一过程是递归的,可能会导致短时间内存可用容量迅速降低,进而导致进程卡顿。蓝图的 Cast to XXXX 节点会导致硬引用对象,即使存在但不使用该节点也会硬引用cast对象。所以应该避免在蓝图中大量使用该节点
软引用:
- 对象A通过间接机制(例如字符串形式的对象路径)来引用对象B,软引用对象并不会主动地将引用对象加载到内存当中,需要手动进行同步/异步加载,即软引用并不存放资源本身
- 软引用为间接属性引用,间接属性引用的工作方式对于设计人员就像直接属性引用一样(蓝图中下滑菜单进行选取资源),但是,属性以字符串形式与模版代码存储在一起以便安全地检查资源是否已加载,而不是进行直接指针引用