網上的案例大部分是官方的案例,個人的案例還是比較少的。我這個案例比較通俗易懂
unity需要的控件有兩個:一個是button和input
C#代碼如下:
using System.Collections; using System.Collections.Generic; using UnityEngine; using XLua; using UnityEngine.UI; using System; public class LuaDemoScript : MonoBehaviour { public TextAsset textAsset; public CMyClass[] lists; private LuaTable runTable; internal static LuaEnv luaEnv = new LuaEnv(); //初始化lua的加載器 public void Awake() { runTable = luaEnv.NewTable(); //普通表 LuaTable metaTable = luaEnv.NewTable(); //元表 metaTable.Set("__index", luaEnv.Global); //把元方法放入元表里面 runTable.SetMetaTable(metaTable); //把元表放入普通表 metaTable.Dispose(); //銷毀元表 runTable.Set("self", this); //把當前對象的指針傳給普通表。方便在XLua里面用 for(int i = 0;i < lists.Length; i++) //循環控件。賦值給表 { runTable.Set(lists[i].name, lists[i].go); } luaEnv.DoString(textAsset.text,"LuaDemo.lua", runTable); } }
//該類主要是保存控件信息的 [Serializable] public class CMyClass { public string name; public GameObject go; }
XLua腳本如下:
self:GetComponent("Button").onClick:AddListener( function() local t = loginname:GetComponent("InputField") local val = t.text if val == "" then print("值不能為空") else print(val) end end )
注意:如果把XLua腳本放入Unity項目中,是不能以lua作為后綴名的,而是以txt為后綴。如果lua腳本文件中有中文的話需要在文件中轉換成unf-8格式
C#腳本放在button控件上。
然后執行就可以了