uLua下載:http://www.ulua.org/
VS2012/2013的用於編寫Lua的插件:https://babelua.codeplex.com/或http://unknownworlds.com/decoda/
另外還有其他比較好的工具來編寫lua的代碼:Sublime Text3或者Lua Studio
如果不想受VS版本的限制,可以選用Sublime Text3或者Lua Studio。
在uLua插件下載完成之后導入Unity。
1、首寫我們來寫個最簡單的實例:
using UnityEngine; using System.Collections; using LuaInterface; public class LuaTest : MonoBehaviour { void Start () { LuaState luaState = new LuaState(); luaState.DoString("print('hello world 世界')"); } }
2、uLua插件導入到Unity之后,里面會有很多uLua的demo示例,這里就不一一講述。
3、加載Resources目錄里的lua腳本,直接執行的腳本(不帶方法)
們新建一個Resources目錄,在目錄里創建一個名為Test.lua.txt的文件,輸入lua代碼:
print("This is a script from a file 世界")
保存為UTF-8格式,注意Unity的TextAsset不支持lua的后綴名,所以后綴名要修改為txt。
修改上面的示例為下面的代碼即可:
1 using UnityEngine; 2 using System.Collections; 3 using LuaInterface; 4 5 public class LuaLoadFileTest : MonoBehaviour 6 { 7 void Start () 8 { 9 TextAsset luaString = Resources.Load<TextAsset>("Test.lua"); 10 11 LuaState luaState = new LuaState(); 12 luaState.DoString(luaString.text); 13 } 14 }
注意Load的文件是不帶后綴名的。
4、用uLua創建一個GameObject
lua代碼如下:
using UnityEngine; using System.Collections; using LuaInterface; public class LuaTest : MonoBehaviour { private string lua = @" --加載模塊 luanet.load_assembly('UnityEngine') luanet.load_assembly('Assembly-CSharp') --導入 Unity3D 的類 Util = luanet.import_type('Util') GameObject = luanet.import_type('UnityEngine.GameObject') --創建一個新的 GameObject 對象 local newGameObj = GameObject('NewObj') --添加粒子組件 Util.AddComponent(newGameObj, 'UnityEngine', 'ParticleSystem') "; void Start () { LuaState luaState = new LuaState(); LuaScriptMgr._translator = luaState.GetTranslator(); luaState.DoString(lua); } }