xLua——动态热更(二)

作者:追风剑情 发布于:2018-1-15 21:53 分类:C#

示例

using UnityEngine;
using System.Collections;
using XLua;

namespace Hotfix {

    [Hotfix]
    public class LuaManager : MonoBehaviour {

        private LuaEnv luaenv;
        private int tick = 0;

        void Awake()
        {
            luaenv = new LuaEnv();
        }

        void OnDestroy()
        {
            luaenv = null;
        }

        void Update()
        {
            if (++tick % 50 == 0)
            {
                Debug.Log(">>>>>>>>Update in C#, tick = " + tick);
            }
        }

        void OnGUI()
        {
            if (GUI.Button(new Rect(10, 100, 300, 150), "Hotfix"))
            {
                //Lua代码中需要加入这句才能访问私有变量
                //xlua.private_accessible(CS.Hotfix.LuaManager)
                //注意: 不能对没有的C#方法进行热更

                luaenv.DoString(@"
                xlua.private_accessible(CS.Hotfix.LuaManager)
                xlua.hotfix(CS.Hotfix.LuaManager, 'Update', function(self)
                    self.tick = self.tick + 1
                    if (self.tick % 50) == 0 then
                        print('<<<<<<<<Update in lua, tick = ' .. self.tick)
                    end
                end)
            ");
            }
        }
    }
}

运行测试

1111.png

标签: C#

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号