新聞中心
Lua在游戲開(kāi)發(fā)中應(yīng)用是本文要介紹的內(nèi)容,主要是來(lái)了解并學(xué)習(xí)lua中游戲的開(kāi)發(fā),具體內(nèi)容的實(shí)現(xiàn),來(lái)看本文詳解。

創(chuàng)新互聯(lián)是一家專(zhuān)業(yè)提供昌江黎族企業(yè)網(wǎng)站建設(shè),專(zhuān)注與做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、H5高端網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為昌江黎族眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。
前些日子一直忙于開(kāi)發(fā)BigTank項(xiàng)目(下載地址參見(jiàn)劣質(zhì)設(shè)計(jì)網(wǎng)站:http://www.buaa-mstc.com,不支持IE),總結(jié)了一些Lua在C#項(xiàng)目中的應(yīng)用方法。
Lua 是一個(gè)小巧的腳本語(yǔ)言。作者是巴西人。該語(yǔ)言的設(shè)計(jì)目的是為了嵌入應(yīng)用程序中,從而為應(yīng)用程序提供靈活的擴(kuò)展和定制功能。它的主頁(yè)是 www.lua.org。
Lua腳本可以很容易的被C/C++代碼調(diào)用,也可以反過(guò)來(lái)調(diào)用C/C++的函數(shù),這使得Lua在應(yīng)用程序中可以被廣泛應(yīng)用。不僅僅作為擴(kuò)展腳本,也可以作為普通的配置文件,代替XML,Ini等文件格式,并且更容易理解和維護(hù)。
在C#中使用Lua也十分簡(jiǎn)單。
- LuaInterface is a library for integration between the Lua language and Microsoft
- .NET platform’s Common Language Runtime (CLR). Lua scripts can use it to instantiate CLR objects,
- access properties, call methods, and even handle events with Lua functions.
從LuaInterface網(wǎng)站上可以下載到這個(gè)庫(kù)。在你的項(xiàng)目中引用LuaInterface.dll后就可以開(kāi)始了。
BigTank項(xiàng)目還沒(méi)有確定是否要開(kāi)源,所以我拿自己寫(xiě)的電子寵物程序演示一下(它也用了Lua,你可以在實(shí)驗(yàn)室頁(yè)面找到它的全部源代碼)。
- C#:
- //...
- ///
- /// Lua虛擬機(jī)
- ///
- private static Lua luaVM = null;
- ///
- /// 寵物的構(gòu)造函數(shù)
- ///
- public Pet(PetForm _petForm, string _petName, string _petPath)
- {
- petState = new PetState();
- petForm = _petForm;
- petName = _petName;
- //構(gòu)造Lua虛擬機(jī)以解析寵物AI
- luaVM = new Lua();
- //注冊(cè)提供給寵物AI的API函數(shù)
- Type tThis = this.GetType();
- luaVM.RegisterFunction("PetDo", this, tThis.GetMethod("LuaPetDo"));
- luaVM.RegisterFunction("PetDoFrame", this, tThis.GetMethod("LuaPetDoFrame"));
- luaVM.RegisterFunction("Sleep", this, tThis.GetMethod("LuaSleep"));
- //載入AI文件
- luaVM.DoFile(System.AppDomain.CurrentDomain.BaseDirectory + _petPath + "\\ai.lua");
- }
其中RegisterFunction作用是注冊(cè)C#代碼中的一個(gè)public(***版本的LuaInterface支持private)函數(shù)來(lái)供Lua腳本使用,其中無(wú)需關(guān)心參數(shù)的個(gè)數(shù)以及類(lèi)型。
- Lua:
- PetDo("Sleep");
執(zhí)行DoFile后會(huì)調(diào)用Lua腳本,后者則調(diào)用C#中的PetDo函數(shù)完成指定動(dòng)作。
小結(jié):Lua在游戲開(kāi)發(fā)中應(yīng)用教程的內(nèi)容介紹完了,希望通過(guò)本文的學(xué)習(xí)能對(duì)你有所幫助!
名稱(chēng)欄目:Lua在游戲開(kāi)發(fā)中應(yīng)用教程
分享地址:http://www.5511xx.com/article/dpgocde.html


咨詢(xún)
建站咨詢(xún)
