首页 > 编程语言 >C#的ugui与XLua整合的案例

C#的ugui与XLua整合的案例

时间:2024-09-05 10:25:07浏览次数:10  
标签:控件 C# runTable XLua luaEnv using ugui public

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

unity需要的控件有两个:一个是button和input

C#的ugui与XLua整合的案例_元表

 

 

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#的ugui与XLua整合的案例_lua_02

 

 C#脚本放在button控件上。

然后执行就可以了

 



标签:控件,C#,runTable,XLua,luaEnv,using,ugui,public
From: https://blog.51cto.com/liFrans/11926369

相关文章

  • ngui物件在Scenes中有显示,在game视图中没有显示的原因
    我们在创建物件的时候,在scenes视图中用到的是全局的camera,所以不管是3d物件还是ugui物件,ngui物件都是有显示的。但是在game视图中,3d物件和ugui物件都是用到的是全局的camera。ngui用到的是它本身自带的camera。所以我们只要在ngui中的camera能显示出来,那么我们就能在game视图中显示......
  • 如何使用JavaScript遍历对象
    一、使用for-in循环——简单直接,快速上手for-in循环是最基础也是最常用的对象遍历方法。它语法简单,适合初学者快速掌握constuser={name:'Alice',age:25,job:'Engineer'};for(constkeyinuser){constvalue=user[key];console.log(`${key......
  • Chrome 浏览器插件获取网页 window 对象(方案三)
    前言最近有个需求,是在浏览器插件中获取window对象下的某个数据,当时觉得很简单,和document一样,直接通过嵌入content_scripts直接获取,然后使用sendMessage发送数据到插件就行了,结果发现不是这样滴...在这里不推荐使用runtime.executeScript进行注入,很可能会报错:Refus......
  • 易优CMS使用过程遇到问题汇总
    列表页模板不显示数据确认模型是否关联正确。检查模板标签是否书写正确。单页模板无法显示内容确认单页是否已发布。检查单页模板路径是否正确。图片无法上传或显示检查服务器是否开启了文件上传权限。确认上传目录是否有写入权限。文章详情页链接错误重......
  • IDA 出现 Decompilation failure: xxx: call analysis failed Please refer to the ma
    题目https://files.buuoj.cn/files/3519510dd82111302327c73a17602a65/attachment.zipF5反汇编发现弹出这个窗口Decompilationfailure:401095:callanalysisfailedPleaserefertothemanualtofindappropriateactions右键查看TextView来到这个地址进入这个函......
  • opc ua设备数据 转 IEC61850项目案例
    目录1 案例说明 12 VFBOX网关工作原理 13 准备工作 24 配置VFBOX网关采集OPCUA的数据 25 用IEC61850协议转发数据 46 网关使用多个逻辑设备和逻辑节点的方法 67 案例总结 71 案例说明设置网关采集OPCUA设备数据把采集的数据转成IEC61850协议转发给其他系统。2 VFBO......
  • 网站提示“503 Service Unavailable:服务器暂时无法处理请求”错误如何解决
    当您遇到“503ServiceUnavailable:服务器暂时无法处理请求”的错误时,这表示服务器当前不能处理请求,但预计稍后可以恢复。这可能是由于服务器过载、正在进行维护、配置错误或其他暂时性问题。以下是解决此类问题的一些步骤:检查服务器负载:确认服务器是否过载。如果服务器资源(......
  • 轻松应对亿级数据,HBase Scan读取速度翻倍
    轻松应对亿级数据,HBaseScan读取速度翻倍HBase是一种基于Hadoop的分布式列存储数据库,它支持大规模结构化数据的存储和随机访问。在HBase中,扫描(Scan)是一种读取表中数据的方式,它可以返回表中满足条件的一部分或全部数据。本文将介绍HBase中扫描的概念、使用方法和性能优化。1扫描......
  • PLC结构化文本(ST)——访问修饰符
    PLCStructuredTextObjectOrientedProgrammingPLC结构化文本(ST)——访问修饰符访问修饰符及作用根据出现位置不同划分1.出现在功能块(FB)中①.Public:最低访问级别,此功能块可以被任何地方声明调用。②.Internal:只允许当前项目命名空间才可以调用,也就是说一旦封装成库,外部......
  • VMware Workstation 17.6 Pro Unlocker & OEM BIOS 2.7 for Windows & Linux
    VMwareWorkstation17.6ProUnlocker&OEMBIOS2.7forWindows&Linux在Windows和Linux上运行macOSSequoia请访问原文链接:https://sysin.cn/blog/vmware-workstation-17-unlocker/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org2024-09-03,版本13.6更......