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

相关文章
|
安全 图形学
|
9月前
|
IDE 持续交付 vr&ar
Unity编辑器扩展
Unity编辑器扩展
|
图形学 索引
|
搜索推荐 Linux C#
Unity基础
Unity是什么,Unity是一个游戏开发引擎,他功能强大,学习简单,炉石传说,王者荣耀等游戏就是利用Unity引擎开发出来的
323 0
Unity基础
|
编解码 监控 图形学
unity设置程序
unity设置程序 Application.runInBackground 后台运行 Application.dataPath 数据路径 Application.persistentDataPath 持久数据路径 Application.
1028 0
|
图形学 容器
有趣而又被忽略的Unity技巧
一个常见的工作情景是我们在调整场景内的某些组件参数时,没有注意到自己是在Play Mode的模式下进行的,从而导致修改没有被保存下来。这个问题的关键在于是我们没有意识到自己已经处在Play Mode,如果我们能够在修改参数的时候,清楚的意识到自己处于Play Mode,那么我们自然可以通过Copy Component来保存数据或者是选择在Editor Mode进行修改。
1002 0
|
算法 测试技术 图形学
unity的一些重要技巧
统一所有的模型的面朝向(Z轴正向或者反向) 对于所有具有面朝向的对象(例如角色)都应该遵守这一条。在统一面朝向的前提下,很多算法可以简化。 在开始就把Scale搞正确 请美术把所有导入的缩放系数设置为1,并且把他们的Transform的Scale设置为1,1,1。
992 0
|
图形学 Windows
Unity小技巧介绍
技巧一为字段声明的代码中加上[Tooltip(“XX”)]属性声明,在检视面板中,当鼠标悬停在字段名上,会出现Tooltip中指定的提示信息,让策划人员能更好地理解字段代表的意思。技巧二在层级视图中选中游戏对象,按快捷键Shift + Alt + A可以快速设置对象激活状态。
1263 0
|
图形学
Unity等待写入数据
EasyTouch中QuickGesture的用法 本文提供全流程,中文翻译。Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) ...
979 0
|
JSON 数据格式
Unity 基础之LitJSON
最近接手一个项目,在项目中有用到Json的地方,根据网上找到的资料 客户端配置文件优化策略,综合评定发现LitJson还不错,于是找到Json下载的网站的网站下载对应的Json,进入LitJson后尽然提示我 404! WTF?!!!我可是会科学上...
1601 0