• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C#的ugui与XLua整合的案例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

网上的案例大部分是官方的案例,个人的案例还是比较少的。我这个案例比较通俗易懂

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

然后执行就可以了

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#面向对象--练习题发布时间:2022-07-13
下一篇:
C#启动应用程序发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap