xLua——动态热更(二)

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

示例

  1. using UnityEngine;
  2. using System.Collections;
  3. using XLua;
  4.  
  5. namespace Hotfix {
  6.  
  7. [Hotfix]
  8. public class LuaManager : MonoBehaviour {
  9.  
  10. private LuaEnv luaenv;
  11. private int tick = 0;
  12.  
  13. void Awake()
  14. {
  15. luaenv = new LuaEnv();
  16. }
  17.  
  18. void OnDestroy()
  19. {
  20. luaenv = null;
  21. }
  22.  
  23. void Update()
  24. {
  25. if (++tick % 50 == 0)
  26. {
  27. Debug.Log(">>>>>>>>Update in C#, tick = " + tick);
  28. }
  29. }
  30.  
  31. void OnGUI()
  32. {
  33. if (GUI.Button(new Rect(10, 100, 300, 150), "Hotfix"))
  34. {
  35. //Lua代码中需要加入这句才能访问私有变量
  36. //xlua.private_accessible(CS.Hotfix.LuaManager)
  37. //注意: 不能对没有的C#方法进行热更
  38.  
  39. luaenv.DoString(@"
  40. xlua.private_accessible(CS.Hotfix.LuaManager)
  41. xlua.hotfix(CS.Hotfix.LuaManager, 'Update', function(self)
  42. self.tick = self.tick + 1
  43. if (self.tick % 50) == 0 then
  44. print('<<<<<<<<Update in lua, tick = ' .. self.tick)
  45. end
  46. end)
  47. ");
  48. }
  49. }
  50. }
  51. }

运行测试

1111.png

标签: C#

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号