toLua中Lua调用C#中的类
1.Unity学习笔记--基础2.Unity学习笔记--入门3.Unity学习笔记--数据持久化之PlayerPrefs的使用4.Unity学习笔记--数据持久化XML文件(1)5.Unity学习笔记--数据持久化XML文件(2)6.Unity学习笔记--数据持久化Json7.NGUI学习笔记(1)8.NGUI学习笔记29.NGUI学习笔记3.510.NGUI学习笔记4.011.Unity 热更--AssetBundle学习笔记 0.712.Unity 热更--AssetBundle学习笔记 0.813.Unity 热更--AssetBundle学习笔记 1.0【AB包资源加载工具类的实现】14.[2]自定义Lua解析方式15.Unity热更学习toLua使用--[1]toLua的导入和默认加载执行lua脚本16.自定义Lua解析器管理器-------演化脚本V0.517.使用自定义委托来调用Lua中的多返回值和长参数类型函数18.使用自定义lua解析管理器调用lua脚本中的table19.Lua热更学习--使用toLua中的协程
20.toLua中Lua调用C#中的类
21.热更学习笔记10~11----lua调用C#中的List和Dictionary、拓展类中的方法22.Lua中调用ref和out修饰参数的函数/重载函数23.Unity 编辑器中获取选中的文件夹、文件路径toLua中Lua调用C#:
[7]Lua脚本调用C#中的class
准备工作:
1.调用lua脚本
2.绑定LuaState虚拟机,这样在lua脚本中才可以对C#脚本进行访问。
3.在lua中使用Debug打印信息,需要在自定义CustomSetting脚本中添加Debug,并生成wrap文件。
--- --- Generated by EmmyLua(https://github.com/EmmyLua) --- Created by TonyChang. --- DateTime: 2024/5/14 6:55 --- print("----------------------toLua中调用c#脚本-------------------------") --调用Unity中的类 local object1 = UnityEngine.GameObject("object1") local object2 = UnityEngine.GameObject("TonyChang") GameObject = UnityEngine.GameObject local object3 = GameObject("object3") --类中的静态对象可以使用 . 来调用 local TonyChang = GameObject.Find("TonyChang") print(TonyChang.transform.position.x)
调用的C#自定义脚本
Lua中调用自定义脚本
与使用Debug打印信息方式一样,如果lua中要调用C#中的内容则需要在CustomSetting中添加类,要通过命名空间.类名形式添加。之后仍需生成对应的wrap脚本。如果有报错,注释掉相关内容即可!
下面在lua脚本中的调用吧~
--使用Unity的Debug来打印 Debug = UnityEngine.Debug Debug.Log("----------Hello-----------") Vector3 = UnityEngine.Vector3 --使用 :调用成员方法 TonyChang.transform:Translate(Vector3.right) Debug.Log(TonyChang.transform.position.x) --调用继承了MonoBehaviour的类 TonyChang:AddComponent(typeof(TestScripts.Test)) --调用没有继承MonoBehaviour的类 local JackStu = TestScripts.Student("Jack") JackStu:Speak()
Lua中要调用的自定义类
using UnityEngine; namespace TestScripts { public class Student { private string _name; public Student(string name) { _name = name; } public void Speak() { Debug.Log("my name is " + _name); } } public class Test : MonoBehaviour { private void Awake() { Debug.Log("Test.cs is running"); } } }
运行结果:
此处注意:在生成的Debug warp文件时候会报错产生,是因为wrap文件中使用指针,将相关的代码注释掉即可!
总结:在lua脚本中调用:类中的静态对象可以使用 . 来获取,方法则使用 : 来调用,调用定义脚本需要在配置信息中添加,并重新生成wrap文件。
本文作者:畅知
本文链接:https://www.cnblogs.com/TonyCode/p/18190472
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步