国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

在Unity3d中解析Lua腳本的方法

2019-11-17 02:59:06
字體:
供稿:網(wǎng)友

在Unity3d中解析Lua腳本的方法

由于近期項目中提出了熱更新的需求,因此本周末在Lua的陪伴下度過。對Lua與Unity3d的搭配使用,僅僅達到了一個初窺門徑的程度,記錄一二于此。水平有限,歡迎批評指正。

網(wǎng)絡上關(guān)于Lua腳本和Unity3d的配合使用的資料不多,例子工程大多相同。大概了解到針對性的插件有uLua、UniLua、KopiLua三種。試用了前兩種,拋開效率與安全性不說,感覺uLua試用起來比較簡單,本文只介紹uLua的使用步驟。

uLua的原理是在Unity3d中解析字符串形式的Lua腳本,讓Lua與C#相互傳遞參數(shù)和方法,這樣可以以文本的形式記錄Lua腳本,游戲啟動后就能夠動態(tài)地讓一部分外部邏輯在游戲中運行起來。

如果在外部的Lua腳本中記錄了加載資源的內(nèi)容,那么就可以通過更新這個記錄有Lua腳本的文檔來加載不同的資源,實現(xiàn)游戲的熱更新。

(當然,Lua腳本的使用的多少,使用在哪些部分,感覺值得為每款游戲量身思考,比如擔心效率不高,可能就不適合使用在要求運行速度的部分;一旦Lua腳本中出現(xiàn)了報錯,他只會報在C#中解析他的地方,因此查錯的難易程度可能也是個問題)

1】下載到ulua的資源包,導入工程中,按照說明,將其中的Plugins文件夾中的內(nèi)容整體復制到工程的Plugins文件夾中;

(這一步可能會出現(xiàn)找不到dll的錯誤,我這里是重啟Unity解決的)

導入后工程的根目錄有以下這些東西:

2】在.txt文件中編寫一些Lua腳本,比如:

(注意:此處.txt腳本的后綴名是".txt")

3】將這個存有Lua腳本的.txt文件加載到游戲中,資源類型是"TextAsset":

方法任選,比如:

①放到Resources文件夾中,Resources.Load()來加載;

②放到工程中任意地方,使用Resoueces.LoadAtPath()來加載;

③打成AssetBundle,放到文件服務器上,使用WWW來異步加載。

如果使用③的話,推薦一個名字叫做"HFS"的虛擬文件服務器的小工具很方便,只需點一下,即可模擬一個文件服務器出來:

,非常好用)

4】解析Lua腳本:

1 LuaState ls = new LuaState();2 ls.DoString(luaString);              //luaString是加載進來的文檔中的字符,類型是string3 LuaFunction lf = ls.GetFunction("luaFunc");  //luaFunc是Lua腳本中編寫的方法名4 object[] r = lf.Call("2");            //括號中的"2"是要傳遞到Lua中的方法中的參與整型運算的值5 return r[0].ToString();              //r[0]即是運算后返回的值,類型是object,用之前,需要轉(zhuǎn)一下類型

非常簡單,綜上,Lua與Unity3d中的C#的聯(lián)系,互相傳遞方法和參數(shù),就OK了。你會看到,真的有外部的邏輯在正在運行的游戲中起作用了。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 茶陵县| 申扎县| 五台县| 泰兴市| 山西省| 定结县| 北川| 彰化县| 广水市| 上饶市| 沙田区| 天长市| 上饶市| 桐庐县| 中山市| 洛阳市| 孙吴县| 赤城县| 马关县| 伽师县| 株洲市| 安达市| 永春县| 聂拉木县| 石屏县| 南涧| 昆山市| 浦县| 邻水| 青铜峡市| 分宜县| 西林县| 枣庄市| 利辛县| 甘孜| 含山县| 茶陵县| 灵山县| 罗城| 沈丘县| 巩留县|