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); } }