Actor的继承关系
本节主要介绍Actor的继承关系, 以及Lua层的继承关系.
上表是已有的Actor种类对应的继承关系.
0.1. Lua中继承Actor
在Lua中我们有三种方法对Actor进行扩展
通过xe.XClass(NewClassName, Class)方法创建新的Actor类型.
local NewActor = xe.XClass("NewActor", XEActor)
不过我们引擎Actor是通过工厂模式创建的对象, C++层无法创建Lua的类. (在Lua层建议组合不建议继承)
在Lua中可以通过setpeer方法对C++类进行扩展.
local tbExtend = {} function tbExtend:Run() print("tbExtend:Run..."); end local pActor = self:GetWorld():CreateActor(XEAnimationMeshActor.ACTOR_TYPENAME); ---给Actor添加方法Run() tolua.setpeer(pActor, tbExtend);
我们可以创建出对象后直接给对象添加属性.
local pActor = world:CreateActor(szActorTypeName); ---给Actor添加一个属性a pActor.a = 10
不管用哪种方法C++都是无法直接调用的Lua创建的属性的.