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>



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

相关文章
|
1月前
|
Java 调度 C#
C#学习系列相关之多线程(一)----常用多线程方法总结
C#学习系列相关之多线程(一)----常用多线程方法总结
|
1月前
|
C#
C#学习相关系列之数组---常用方法使用(二)
C#学习相关系列之数组---常用方法使用(二)
|
1月前
|
存储 C# 数据库
C# 生成唯一ID,有哪些方法?
【2月更文挑战第12天】
167 0
|
3月前
|
编译器 C# 开发者
C# 11.0中的新特性:覆盖默认接口方法
C# 11.0进一步增强了接口的灵活性,引入了覆盖默认接口方法的能力。这一新特性允许类在实现接口时,不仅可以提供接口中未实现的方法的具体实现,还可以覆盖接口中定义的默认方法实现。本文将详细介绍C# 11.0中接口默认方法覆盖的工作原理、使用场景及其对现有代码的影响,帮助开发者更好地理解和应用这一新功能。
|
3月前
|
安全 C# 开发者
C#中的默认接口方法:接口演化的新篇章
【1月更文挑战第11天】本文探讨了C# 8.0中引入的默认接口方法,这一特性允许在接口中定义具有默认实现的方法。文章介绍了默认接口方法的语法、使用场景,以及它们如何影响接口的设计和实现,同时讨论了默认接口方法带来的好处和潜在的陷阱。
|
1月前
|
C#
C#学习相关系列之数据类型类----嵌套类和嵌套方法(三)
C#学习相关系列之数据类型类----嵌套类和嵌套方法(三)
|
1月前
|
开发框架 .NET C#
C#学习相关系列之Linq常用方法---排序(一)
C#学习相关系列之Linq常用方法---排序(一)
|
1月前
|
开发框架 .NET 编译器
C#学习相关系列之匿名方法和Lambda表达式
C#学习相关系列之匿名方法和Lambda表达式
|
1月前
|
C#
C#中保留小数点后N位的方法_kaic
C#中保留小数点后N位的方法_kaic
|
3月前
|
数据采集 开发框架 C#
Baumer工业相机堡盟工业相如何使用BGAPISDK通过两种不同的方法进行图像回调函数的使用(C#)
Baumer工业相机堡盟工业相如何使用BGAPISDK通过两种不同的方法进行图像回调函数的使用(C#)
26 0