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

    然后执行就可以了

  • 相关阅读:
    msp430入门编程41
    msp430入门编程40
    msp430入门编程37
    msp430入门编程36
    msp430入门编程35
    msp430入门编程34
    msp430入门编程33
    msp430入门编程31
    msp430入门编程32
    msp430入门编程30
  • 原文地址:https://www.cnblogs.com/LixiaoFeng1650062546/p/13039063.html
Copyright © 2020-2023  润新知