Lua 反射获取和修改C#变量

Lua 反射获取和修改C#变量

	print('------------------tolua自带反射测试----------------------')
	
	--lua自带反射测试
	require 'tolua.reflection'      
	    
	--加载程序集
    tolua.loadassembly('Assembly-CSharp')      
      
    --为了省事,全部与一遍
    local bitor = bit.bor(0,1,2,4,8,16,32,64,256,512,1024,2048,4096,8192,16384,32768)
    
    --上面每个与值的枚举
    local t = typeof('BoTest2')
    
    --创建对象
    local obj = tolua.createinstance(t)
    
    --公有静态方法
    local func = tolua.getmethod(t, 'BoTest2_public_static_int')
    print(func:Call()) 
    func:Destroy()
    func = nil
    
    --公有静态带参数方法
    local func = tolua.getmethod(t, 'BoTest2_public_static_int_arg',typeof('System.Int32'))
    print(func:Call(1)) 
    func:Destroy()
    func = nil
    
    --公有方法
    local func = tolua.getmethod(t, 'BoTest2_public_int')
    print(func:Call(obj) )
    func:Destroy()
    func = nil
    
    --公有带参数方法
    local func = tolua.getmethod(t, 'BoTest2_public_int_arg',typeof('System.Int32'))
    print(func:Call(obj,2)) 
    func:Destroy()
    func = nil
    
    --私有静态方法
    local func = tolua.gettypemethod(t, 'BoTest2_static_int',bitor)
    print(func:Call())
    func:Destroy()
    func = nil
    
    --私有方法
    local func = tolua.gettypemethod(t, 'BoTest2_int',bitor)
    print(func:Call(obj)) 
    func:Destroy()
    func = nil
    
    --公有字段
    local field = tolua.getfield(t, 'public_int')
    field:Set(obj, 5)
    print(field:Get(obj))
    field:Destroy() 
    
    --私有字段
    local field = tolua.getfield(t, 'private_int',bitor)
    field:Set(obj, 6)
    print(field:Get(obj))
    field:Destroy()   
    
    --公有属性
    local property = tolua.getproperty(t, 'public_int_set_get')
    property:Set(obj, 7, null)
    print(property:Get(obj, null))
    property:Destroy()
    
    --私有属性
    local property = tolua.getproperty(t, 'private_int_set_get',bitor)
    property:Set(obj, 8, null)
    print(property:Get(obj, null))
    property:Destroy()
    
    --枚举,这里主要说明枚举怎么用typeof
    local t = typeof('TestEnumOut')
    local t = typeof('BoTest2+TestEnumIn')--这里用 ‘+’来代替‘.’
	
	--加载另一个程序集的静态类
	require 'tolua.reflection'
	tolua.loadassembly('Common')
	local t = typeof('rkt.Common.GlobalGame')
	local field = tolua.getfield(t, 'isCanQuit')
	field:Set(null, false)
	field:Destroy()
	
	--修改私有变量string的值
	require 'tolua.reflection'
	tolua.loadassembly('Unity.TextMeshPro')
    local bitor = bit.bor(0,1,2,4,8,16,32,64,256,512,1024,2048,4096,8192,16384,32768)
	local t = typeof('TMPro.TMP_Text')
	local field = tolua.getfield(t, 'defaultColor',bitor)
	field:Set(null, '#18dcff')
	print(field:Get(null))
	field:Destroy()

点此跳转详细地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值