第一次拿到UE4源码,扫了一遍。各种宏定义,各种模板,各种类层次。杂乱无章。
后来慢慢明确其规律:
UE4的编码风格是在匈牙利命名法的基础下做了改进,使其更适用游戏引擎业务(业务特点:数据可视编辑、脚本化)。
UE4保留了匈牙利命名法的大驼峰。使Tag含义更易读。
UE4里有非常多类型都以F、U、A、T为前缀,成员变量不加m前缀。为什么呢?
站在设计者的角度,想想UE4的引擎设计思路。引擎必定是很庞大复杂,但再复杂的引擎都是从零设计编码出来的。
设计者设计之初定然明确这是一个庞然大物,要想可控。模块化,这是每一个大型软件设计师一定会想到的。
另外就是:超越语言的面向对象。不同功能的对象,在不同角度(语言层面,编辑器层面,脚本层面)的表现。
拿编辑器层面来说。一个对象的数据成员在可视化层面假设加了个m是不是非常奇怪?
为了区分成员变量,函数參数一般加上In或者Out前缀,而类型也依照规律将通常的类型加上F前缀,继承自UObject的加上U前缀,继承自AActor的加上A前缀,模板加上T前缀。
时间: 2024-12-28 09:11:40