1. 程式人生 > WINDOWS開發 >C#的ugui與XLua整合的案例

C#的ugui與XLua整合的案例

網上的案例大部分是官方的案例,個人的案例還是比較少的。我這個案例比較通俗易懂

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控制元件上。

然後執行就可以了