Unity Xlua 之 Lua调用C#(三)

一.Lua使用C#委托和事件

public class Lesson7
{public UnityAction action;public event UnityAction eventAction;public void DoEvent(){eventAction?.Invoke();}public void ClearEvent(){eventAction = null;}
}
Lesson7 = CS.Lesson7
local l7 = Lesson7()function Fun()print("Func执行!")
end--开始委托为空值,需要先赋值在相加
l7.action = Fun
l7.action = l7.action + Fun
l7.action()
l7.action = l7.action - Fun
l7.action = nil--清空可以直接置空
l7.action = Fun
l7.action()print("=====Event=====")
l7:eventAction("+",Fun)
l7:eventAction("+",Fun)
l7:eventAction("+",Fun)
l7:eventAction("+",Fun)
l7:eventAction("+",Fun)
l7:DoEvent()
print("=====Event减去=====")
l7:eventAction("-",Fun)
l7:eventAction("-",Fun)
--l7.eventAction = nil  清空不可以直接置空,需要在Unity中添加函数
l7:ClearEvent()
l7:DoEvent()

二.Lua使用C#二维数组

  • Lua中不能直接使用[index]来获取二维数组中的元素
public class Lesson8
{public int[,] array = { { 1, 2, 3 }, { 1, 2, 3 } };
}
Lesson8 = CS.Lesson8
local l8 = Lesson8()
print(l8.array:GetLength(0))
print(l8.array:GetLength(1))for i = 0, l8.array:GetLength(0) - 1 dofor j = 0, l8.array:GetLength(1) - 1 doprint(l8.array:GetValue(i, j))end
end

三.C# null和Lua nil比较

  • C#中的null和Lua中的nil不一定一样,需要自己封装一个函数进行判断
public class Lesson9
{public Lesson lesson = null;
}
Lesson9 = CS.Lesson9
local l9 = Lesson9()
--对于object类可以这样判空
if l9.lesson == nil thenprint("空对象")
elseprint("非空对象")
endGameObject = CS.UnityEngine.GameObject
Rigidbody = CS.UnityEngine.Rigidbodylocal obj = GameObject("zzs")
local rigiComponent = obj:GetComponent(typeof(Rigidbody))
--对于Object类需要Equals判断
if (rigiComponent:Equals(nil)) thenrigiComponent = obj:AddComponent(typeof(Rigidbody))
end
print(rigiComponent)
--解决方案一,在主函数中添加全局判空函数IsNull()
print(IsNull(rigiComponent))
rigiComponent = nil
print(IsNull(rigiComponent))
print("==============")
print(IsNull(l9.lesson))
--解决方案二,在C#中拓展Object方法

Unity Xlua 之 Lua调用C#(三)相关推荐

  1. Unity Xlua 之 C#调用Lua(一)

    Unity Xlua 之 C#调用Lua(一) 一.Lua解析器(LuaEnv) 执行Lua代码,加载Lua文件执行 public class Lesson01_LuaEnv : MonoBehavi ...

  2. Unity XLua 官方教程学习

    一.Lua 文件加载 1. 执行字符串 using UnityEngine; using XLua;public class ByString : MonoBehaviour {XLua.LuaEnv ...

  3. Unity Xlua之Hotfix热补丁 (一)

    Unity Xlua之Hotfix热补丁 (一) 一.第一个热补丁 想要打热补丁的类前需要加上[Hotfix]特性 第一次打热补丁需要加上宏HOTFIX_ENABLE 点击生成代码 点击注入热补丁 例 ...

  4. Unity+XLua+阿里云热更代码

    Unity+AssetsBundel+XLua+阿里云 Unity热更新的步骤:AssetsBundle打包好资源--上传到服务器--运行项目--检测是否需要更新--1.需要更新2.不需要更新--1. ...

  5. lua——alien库实现lua调用C动态链接库(dll、so)

    我们知道,lua通过lua_State堆栈可以很方便的与C语言进行交互 http://blog.csdn.net/sm9sun/article/details/68946343 也可以调用专门为lua ...

  6. lua按钮unity_在Unity中使用Lua脚本

    前言:为什么要用Lua 首先要说,所有编程语言里面,我最喜欢的还是C#,VisualStudio+C#,只能说太舒服了.所以说,为什么非要在unity里面用Lua呢?可能主要是闲的蛋疼.....另外还 ...

  7. 穿山甲android对接错误码40029,空Android项目集成Cocos、穿山甲。Lua调用网络接口。...

    1. 搭建安卓空项目.集成cocos.穿山甲广告新建安卓项目start new android projectEmpty Activity包名这里要和穿山甲上面已创建的应用的包... 1. 搭建安卓空 ...

  8. 【Lua进阶系列】实例lua调用capi

                             [Lua进阶系列]实例lua调用capi     大家好,我是Lampard~~     欢迎来到Lua进阶系列的博客     首先祝大家2021新年 ...

  9. LUA调用C(一)-----CAPI

    LUA调用C(一)-----CAPI ​ 一:为什么要使用Lua调用C函数 在lua中调用C函数可以提高程序的运行效率.所以lua与C的相互调用在工程中相当实用,本文就来讲解lua与C相互调用的方法. ...

最新文章

  1. android menu 小红点,Android自定义ActionProvider ToolBar实现Menu小红点
  2. 在javascript中==和===的区别
  3. Opportunity PRODUCT GUID
  4. office数据集dslr_如何将照片从DSLR无线传输到智能手机
  5. 我已经把它摸的透透的了!!!Spring 动态数据源设计实践,全面解析
  6. P3449-[POI2006]PAL-Palindromes【结论题,字符串hash】
  7. string赋值-单引号和双引号的区别(php)
  8. github上传命令
  9. Android使用BaseAdapter绑定ListView实现不同item的TextView多种文字变色
  10. Makefile:宏定义EXTRA_CFLAGS += -D 与CONFIG_ =y
  11. tensorflow 提示没有models库
  12. 哈希值之逆序数与变进制
  13. Python1 关于安装
  14. HDX RealTime 避免回音
  15. phpstorm设置鼠标滚动缩放代码字体大小
  16. 5分钟了解英文SEO做外链的正确姿势
  17. [转]的C#实现三维数字地形漫游(基于Irrlicht)
  18. python爬取17000个球员_Python爬取NBA球员生涯数据及简单可视化
  19. 关于MSELoss、BCELoss、CELoss损失函数求导的推导
  20. C#经常用到的编程词汇

热门文章

  1. 尚硅谷大厂面试题第二季(上)
  2. 荣耀电视鸿蒙系统的,鸿蒙系统荣耀智慧屏正式亮相 “电视的未来”来了
  3. 关于学校计算机维修请示,学校维修请示范文
  4. 金龄会2023广东云南两省联动《金龄春晚》即将开幕
  5. python3 value counts函数_pandas计数 value_counts()的使用
  6. 访达桌面高清动态壁纸
  7. win7系统IE11浏览器导致页面无法点选日期解决方法:
  8. 图像处理之水波纹扩散效果(water ripple effect)
  9. 老同学的涂鸦:香菜的地
  10. 海妖音乐魏清晨:科技读心术