项目后期Lua接入笔记08--Lua面向对象及LuaBehaviour的再设计

本文记录了在项目后期使用Lua进行面向对象编程和LuaBehaviour的改造过程,重点在于metatable的运用。文章引用并修改了云风大大的代码,详细介绍了在Lua中如何创建和实现类的继承。同时,对于C#中的luamono类也进行了相应的调整,虽然实例化预制体在Lua中的使用方式不变,但需额外调用SetTable方法来手动赋值。
摘要由CSDN通过智能技术生成

lua类创建和继承的关键是metatable的使用,这里直接使用云风大大的代码(部分修改)

local _class={}

function class(super)
    local class_type={}
    class_type.ctor=false
    class_type.super=super

    class_type.new=function(...) 
            local obj={}
            do
                local create
                create = function(c,...)
                    if c.super then
                        create(c.super,...)
                    end
                    if c.ctor then
                        c.ctor(obj,...)
                    end
                end

                create(class_type,...)
            end
            setmetatable(obj,{ __index=_class[class_type] })
            return obj
        end
    local vtbl={}
    _class[class_type]=vtbl 

    setmetatable(class_type,{__newindex=
        function(t,k,v)
            vtbl[k]=v
        end
    })

    if super then       
        _class[super].base = _class[super];

        setmetatable(vtbl,{__index=
            function(t,k)               
                local ret=_class[super][k]
                vtbl[k]=ret
                return ret
            end
        })

    end


    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值