天天看点

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:

Unity SLua 如何调用Unity中C#方法

注意图中 标红。一般每个lua框架中,都会有这么个注册函数,加了这个注册函数。才会,有下面那步。执行。

II:

点击 Slua->Custom->Make

之后,发现编译之后,多一个:

Unity SLua 如何调用Unity中C#方法

III:

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>

继续阅读