当前位置: 首页 > news >正文

【Lua】XLua加载lua文件

第一种方式:通过默认加载器加载XLua文件

1. 在Asset/Resources下建立A.lua.txt文件:

我在此输入了以下内容,方便观察效果:

2. 编写cs脚本:

using UnityEngine;
using XLua;public class XLua_Mono_ByResources : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){LuaEnv env = new LuaEnv();env.DoString("require 'A'");}
}

3. 挂载至场景内的某个物体,先后点击菜单栏的Clear Generate Code和Generate Code:

4. 运行游戏后将在Console下看到:

第二种方式:通过自定义加载器加载Lua文件

1. 假设在Assets/_Scripts/XLua/_LuaScript文件夹下创建文件B.lua:

2. 编写脚本:

using System;
using System.IO;
using UnityEngine;
using XLua;public class XLua_Mono : MonoBehaviour
{private LuaEnv env = null;// Xlua解释器// Start is called before the first frame updatevoid Start(){env = new LuaEnv();env.AddLoader(MyLoader);env.DoString("require 'B'");}private void OnDisable(){try{if (env != null){// 进行一次强制的垃圾回收env.Tick();// 确保在销毁时释放Lua环境env.Dispose();// 防止再次被引用env = null;}Debug.Log("成功释放解释器资源");}catch(Exception ex){Debug .LogError("释放解释器资源时发生错误: " + ex.Message);}}private byte[] MyLoader(ref string fileName){string filePath = Application.dataPath + "/_Scripts/_XLua/_LuaScript/" + fileName + ".lua";if (File.Exists(filePath)){return File.ReadAllBytes(filePath);}else{Debug.LogError("Lua file not found: " + filePath);}return null;}
}

3. 挂载至场景内的某个物体,先后点击菜单栏的Clear Generate Code和Generate Code:

4. 运行游戏将看到:

http://www.lryc.cn/news/617088.html

相关文章:

  • (一)vscode搭建espidf环境
  • Linux Web服务器与WordPress部署笔记
  • 量子神经网络:从NISQ困境到逻辑比特革命的破局之路
  • 《Linux驱动智能体脂秤数据同步》
  • Discuz论坛和java应用的架构部署
  • gophish钓鱼流程
  • 数字图像处理4
  • 《 C Primer Plus》
  • 如何解决线上gc频繁的问题?
  • 【PyTorch】单目标检测项目
  • Audio Flamingo
  • Graph-R1:一种用于结构化多轮推理的智能图谱检索框架,并结合端到端强化学习
  • 无人机集群协同三维路径规划,采用梦境优化算法(DOA)实现,Matlab代码
  • 量子计算机实用化:从理论到现实的艰难跨越
  • 18.3 全量微调:数据预处理之清洗与准备
  • Java 基础编程案例:从输入交互到逻辑处理
  • Mysql系列--5、表的基本查询(上)
  • GitLab 零基础入门指南:从安装到项目管理全流程
  • Java:单例模式
  • Python day40
  • 在Word和WPS文字一页中实现一栏与多栏混排
  • 攻击实验(ARP欺骗、MAC洪范、TCP SYN Flood攻击、DNS欺骗、DHCP饿死)
  • CompletableFuture实现Excel 多个sheet页批量导出
  • 基于PyTorch一文讲清楚损失函数与激活函数并配上详细的图文讲解
  • 展锐平台(Android15)WLAN热点名称修改不生效问题分析
  • 使用tcp ntrip 协议 接收数据报错 java.net.SocketException: Connection reset
  • IDEA 安装插件的两种方式
  • CVPR医学图像三套创新方案:通用分割+3D高效解码+SSM肿瘤定位(附链接)
  • C++高频知识点(二十)
  • jupyter notebook如何打开其他盘目录