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

然后執行就可以了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM