Unity SLua 如何调用Unity中C#方法
1.原理
就是通常在Lua框架中所说的,开放一个C#的web接口,或者叫做在Slua框架中注册函数。
2.作用
在Lua中调用C#中的方法,这个是在做热更新中很常用的一种方法,无论是slua,还是lua,都差不多、这里,我拿slua举例。
3.实际运用 举例:如何在Slua中打印Log
原理:其实是slua通过调用C#中的Debug.Log方法实现的打印,并不是说是lua中的打印方法起到作用。
步骤:
首先,既然是Lua调用C#中的方法,这里自定义写一个打印log的方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | public class CDebug { /// <summary> /// lua中打印Log /// </summary> /// <param name="title">标题</param> /// <param name="contents">内容</param> public static void Log( string title, string contents) { int level = 3; //这里代码不需要解释把,如果对颜色有需求,可以自己稍微修改一下。 switch (level) { case 1: Debug.Log(contents); break ; case 2: Debug.LogWarning(title+ ":" + contents); break ; case 3: Debug.LogError(title + ":" + contents); break ; default : Debug.Log(contents); break ; } } } |
I:
注意图中 标红。一般每个lua框架中,都会有这么个注册函数,加了这个注册函数。才会,有下面那步。执行。
II:
点击 Slua->Custom->Make
之后,发现编译之后,多一个:
III:
注意:之后我们可以看到多了一个脚本,用svn版本控制,对比一下文件,其实还是有其他地方改动的。
会发现BindCustom文件中的代码变成了
1 2 3 4 5 6 7 8 9 10 11 12 | public class BindCustom { public static Action<IntPtr>[] GetBindList() { Action<IntPtr>[] list= { Lua_CDebug.reg, //这是自动生成的,多附加的 // 因为之前我们看到CustomExport脚本中的OnAddCustomClass方法中 //很多方法是被注释了,所以,需要手动把之前生成过的文件加上,具体看 //SVN版本控制对比一下BundCustom脚本,需要把之前生成过的代码 //手动加上。 //附加:这个不是什么BUG,因为别人以为所有需要在Lua中调用C#的代码都附加好了, //所以,不需要了,假如我们的项目需要上线,也需要还原Log方法,因为他会打包到 //apk包中的. |
这样一个调用C#中的方法的功能做完了,其他的类似的,仿照这个例子就可以。
学以致用,不致用,何学?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述