[XLua] [Hotfix] 实现继承CSharpClass的Lua类

本文介绍了如何在XLua环境中,让Lua类能够继承CSharpClass,并在热补丁更新中方便使用。通过在C#构造函数中返回自定义表,重写get和set接口,实现数据的优先级读取和设置。文章还讨论了实现过程中可能遇到的隐藏问题,如使用nil时的错误,并提出了解决方案,确保即使对象为nil,也能正常设置和获取属性。
摘要由CSDN通过智能技术生成

       这篇文章更适合有XLua编程基础的人,如果对XLua有概念性学习,希望了解更多关于热补丁时的处理细节,那么这篇文章同样会帮助到你。

       那么,这篇文章将帮助你,认识并实现一个可以继承CSharpClass的Lua类,从而在热补丁的使用过程中更加的便捷。


怎么实现

实现思路如下

在C#Class的的构造函数中,返回我们自己创建的表

重写表的 get 和 set 接口

get 数据时,优先返回自建表的属性字段数据,其次返回C# Object的属性字段数据

set 数据时,优先设置自检表存在的属性字段,其次设置C# Object的属性字段数据


实现代码

--> 从网上找了一段已经写好的代码
function ExtendCS(csobj, newobj)
    local csobj_mt = getmetatable(csobj) 
    for k, v in pairs(csobj_mt) do  
        rawset(newobj, k, v) 
    end

    local csobj_index, csobj_newindex = newobj.__index, newobj.__newindex 
    newobj.__index = function(obj, k) 
        --> 优先返回newobj的字段
        return rawget(newobj, k
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值