tolua反射应用

Posted woodjay

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tolua反射应用相关的知识,希望对你有一定的参考价值。

tolua反射应用

有时候要修改紧急bug或者增加一个新功能,但又不能更新整包。C#代码没有导出wrap,可以临时用一下tolua的反射。

C#代码:

namespace MyNameSpace
{
    public class ToluaReflection
    {
        public string StringField = "ToluaReflection";
    }
}

lua代码:

function toLuaReflectionTest()
    require ‘tolua.reflection‘
    tolua.loadassembly(‘Assembly-CSharp‘)
    local reflectionTest = typeof("MyNameSpace.ToluaReflection")
    local instance = tolua.createinstance(reflectionTest)
    local BindingFlags = System.Reflection.BindingFlags
    local flag = System.Reflection.BindingFlags.GetMask( BindingFlags.Public , BindingFlags.NonPublic , BindingFlags.Static , BindingFlags.Instance)
    local pubfield = tolua.getfield(reflectionTest, "StringField", flag)
    local pubfieldValue = pubfield:Get(instance)
    print(pubfieldValue)
    pubfield:Set(instance, "changedpubfield")
    pubfieldValue = pubfield:Get(instance)
    print(pubfieldValue)
end

运行结果:

技术图片

参考博文:https://blog.csdn.net/zoujiandong_8888/article/details/83585213

以上是关于tolua反射应用的主要内容,如果未能解决你的问题,请参考以下文章

tolua-ToLua#暖更新

java 反射代码片段

Unity3D热更新技术点——ToLua

ToLua框架下C#与Lua代码的互调

为啥我的 Ray March 片段着色器反射纹理查找会减慢我的帧速率?

OpenGL片段着色器不照亮场景