调用委托

CallCSDelegate.lua.txt

  1. local callDel = CS.UnityEngine.Object.FindObjectOfType(typeof(CS.shenjun.CallDelegate))
  2. -- 对委托进行初始化赋值
  3. callDel.del = callDel.del2
  4. -- 对委托添加成员方法 错误
  5. -- callDel.del = callDel.Test
  6. -- 在使用前定义
  7. function Test()
  8. print("Lua Func")
  9. end
  10. -- 右操作数可以是同类型的C# delegate/静态方法或者是lua函数。
  11. callDel.del = callDel.del + Test
  12. -- 删除一个委托
  13. --callDel.del = callDel.del - callDel.del2
  14. -- 判断委托是否为空
  15. if nil ~= callDel.del then
  16. -- 调用委托
  17. callDel:del()
  18. end
  19. --把委托变为空
  20. callDel.del = nil

CallCSDelegate.cs

  1. /*
  2. * created by shenjun
  3. */
  4. using System.Collections;
  5. using System.Collections.Generic;
  6. using UnityEngine;
  7. using XLua;
  8. namespace shenjun
  9. {
  10. public class CallDelegate : MonoBehaviour {
  11. public System.Action del = null;
  12. public System.Action del2 = null;
  13. LuaEnv luaEnv = new LuaEnv();
  14. void Start () {
  15. del2 = Test;
  16. luaEnv.DoString("require 'CallCSDelegate'");
  17. }
  18. void Update () {
  19. }
  20. private void OnDestroy()
  21. {
  22. del = null;
  23. del2 = null;
  24. luaEnv.Dispose();
  25. }
  26. public void Test()
  27. {
  28. Debug.Log("CS Func");
  29. }
  30. }
  31. }

?