zoukankan      html  css  js  c++  java
  • Unity热更新04-XLua调用C#-07-Lua调用C# 委托

    print("*********Lua调用C# 委托相关知识点***********")
    
    local obj = CS.Lesson7()
    
    --委托是用来装函数的
    --使用C#中的委托 就是用来装lua函数的
    local fun = function( )
    	print("Lua函数Fun")
    end
    
    --Lua中没有复合运算符 不能+=
    --如果第一次往委托中加函数 因为是nil 不能直接+
    --所以第一次 要先等=
    print("*********开始加函数***********")
    obj.del = fun
    --obj.del = obj.del + fun
    obj.del = obj.del + fun
    --不建议这样写 最好最好还是 先声明函数再加
    obj.del = obj.del + function( )
    	print("临时申明的函数")
    end
    --委托执行
    obj.del()
    print("*********开始减函数***********")
    obj.del = obj.del - fun
    obj.del = obj.del - fun
    --委托执行
    obj.del()
    print("*********清空***********")
    --清空所有存储的函数
    obj.del = nil
    --清空过后得先等
    obj.del = fun
    --调用
    obj.del()
    
    print("*********Lua调用C# 事件相关知识点***********")
    local fun2 = function()
    	print("事件加的函数")
    end
    print("*********事件加函数***********")
    --事件加减函数  和 委托非常不一样
    --lua中使用C#事件 加函数 
    --有点类似使用成员方 冒号事件名("+", 函数变量)
    obj:eventAction("+", fun2)
    --最好最好不要这样写
    obj:eventAction("+", function()
    	print("事件加的匿名函数")
    end)
    
    obj:DoEvent()
    print("*********事件减函数***********")
    obj:eventAction("-", fun2)
    obj:DoEvent()
    
    print("*********事件清楚***********")
    --清事件 不能直接设空
    obj:ClaerEvent()
    obj:DoEvent()
    
  • 相关阅读:
    mybatis源码(八) Mybatis中的#{} 和${} 占位符的区别
    mybatis源码(七)mybatis动态sql的解析过程下篇
    mybatis源码(六)mybatis动态sql的解析过程上篇
    JDBC的API介绍
    mybatis源码(五)mybatis日志实现
    jmeter: 报错锦集
    python3升级后pip提示TLS/SSL错误问题
    Pytest+Jenkins+Allure
    建议
    Android Studio Button事件的三种方式
  • 原文地址:https://www.cnblogs.com/unitysir/p/13896181.html
Copyright © 2011-2022 走看看