Actor的继承关系

本节主要介绍Actor的继承关系, 以及Lua层的继承关系.


alt 上表是已有的Actor种类对应的继承关系.

0.1. Lua中继承Actor

在Lua中我们有三种方法对Actor进行扩展

  1. 通过xe.XClass(NewClassName, Class)方法创建新的Actor类型.

    local NewActor = xe.XClass("NewActor", XEActor)
    

    不过我们引擎Actor是通过工厂模式创建的对象, C++层无法创建Lua的类. (在Lua层建议组合不建议继承)

  2. 在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);
    
  3. 我们可以创建出对象后直接给对象添加属性.

    local pActor = world:CreateActor(szActorTypeName);
    ---给Actor添加一个属性a
    pActor.a = 10
    

不管用哪种方法C++都是无法直接调用的Lua创建的属性的.

@Copyright © cosmos 2019 all right reserved,powered by Gitbook修订时间: 2021-04-12 18:28:14

results matching ""

    No results matching ""