天天看點

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>

繼續閱讀