更新时间:2022-08-14 21:35:19
就是通常在Lua框架中所说的,开放一个C#的web接口,或者叫做在Slua框架中注册函数。
在Lua中调用C#中的方法,这个是在做热更新中很常用的一种方法,无论是slua,还是lua,都差不多、这里,我拿slua举例。
原理:其实是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 ;
}
}
} |
注意图中 标红。一般每个lua框架中,都会有这么个注册函数,加了这个注册函数。才会,有下面那步。执行。
点击 Slua->Custom->Make
之后,发现编译之后,多一个:
注意:之后我们可以看到多了一个脚本,用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,如需转载请自行联系原作者