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
13
public  class  BindCustom {
         public  static  Action<intptr>[] GetBindList() {
             Action<intptr>[] list= {
 
                  Lua_CDebug.reg,  //这是自动生成的,多附加的
// 因为之前我们看到CustomExport脚本中的OnAddCustomClass方法中
//很多方法是被注释了,所以,需要手动把之前生成过的文件加上,具体看
//SVN版本控制对比一下BundCustom脚本,需要把之前生成过的代码
//手动加上。
//附加:这个不是什么BUG,因为别人以为所有需要在Lua中调用C#的代码都附加好了,
//所以,不需要了,假如我们的项目需要上线,也需要还原Log方法,因为他会打包到
//apk包中的.
</intptr></intptr>

本文转自帅气的头头博客51CTO博客,原文链接http://blog.51cto.com/12902932/1926248如需转载请自行联系原作者


sshpp

相关文章
|
存储 图形学
【unity小技巧】unity中导入下载的3D模型及albedo/baseColor、normal 、AO/Occlus、metallic、roughness贴图纹理设置
【unity小技巧】unity中导入下载的3D模型及albedo/baseColor、normal 、AO/Occlus、metallic、roughness贴图纹理设置
1597 0
|
8月前
|
监控 安全 图形学
百度网盘下载速度很慢?电脑下载速度好快?玩游戏很慢?
OpenSpeedy是一款免费开源的Windows工具,可对百度网盘、游戏等软件进行加速,无需会员也能实现高速下载。
3054 0
|
11月前
|
人工智能 自然语言处理 算法
网信办整治 AI 技术滥用,AI 企业如何合规运营
中央网信办开展为期3个月的“清朗・整治AI技术滥用”专项行动,旨在规范AI服务与应用,保障公民权益,促进行业健康发展。文章从算法备案、数据合规管理、内容审核、标识要求、重点领域风险防控、防止侵权、杜绝网络水军及保护未成年人权益八个方面,详细解析了AI企业在运营中需遵循的具体要求与措施,强调企业应主动落实合规,推动AI行业健康有序发展。
|
JSON 前端开发 搜索推荐
Web思维导图实现的技术点分析(附完整源码)
Web思维导图实现的技术点分析(附完整源码)
1021 0
Web思维导图实现的技术点分析(附完整源码)
|
Java Nacos 微服务
nacos的心跳机制详解
nacos的心跳机制详解
943 0
|
机器学习/深度学习 算法 计算机视觉
【图像去噪】基于高斯滤波、均值滤波、中值滤波、双边滤波四种滤波实现椒盐噪声图像去噪附matlab代码
【图像去噪】基于高斯滤波、均值滤波、中值滤波、双边滤波四种滤波实现椒盐噪声图像去噪附matlab代码
|
传感器 算法 iOS开发
Cuptime 2 智能水杯:从数据到游戏,为了让你健康喝水也是操碎了心|评测
麦开一直以来与国内很多智能硬件公司比较不一样,那就是研发的产品几乎都是原创的,而且获得的成绩也不错,这点都比较难得。Cuptime就是其代表作之一,智能水杯可是麦开首创的产品,当时连国外也没有这种产品,一年销售了超过10万台,后面很多智能水杯产品或多或少的也在参考Cuptime。
709 0
Cuptime 2 智能水杯:从数据到游戏,为了让你健康喝水也是操碎了心|评测
|
存储 运维 分布式数据库
1T 数据到底有多大?
本文探讨了1TB数据量的实际意义,通过对比日常业务量和数据库处理能力,揭示了1TB数据的庞大。文中指出,虽然一些机构拥有PB级别的数据,但这更多是存储需求而非计算需求。文章最后强调,优化TB级数据处理效率,如将几小时的处理时间缩短至几分钟,对于大多数应用场景来说更为实际和重要。
|
存储 安全 Linux
谈谈优雅的钩子--bpftrace
bpftrace是一个内核跟踪工具,简单来说就是在函数上挂个钩子,挂上钩子后就可以将函数的入参和返回值取出来再放入程序进行二次编程,最终能让程序按照我们的意图来对函数进行观测。