XLua---自定义loader

本文详细介绍了在Unity中加载Lua脚本的多种方法,包括使用Resources.Load默认加载.txt后缀的文件,通过xlua内置loader简化加载过程,以及自定义加载方式以适应不同路径的Lua文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们在加载lua文件的时候,可以通过Resources.Load方式加载。

在unity里面 Resources.Load加载文件的时候,默认会给你加上后缀,此时直接加载HelloWorld时,unity会自动加上.txt
 也就是说 此时的文件名是  HelloWorld.txt  所以加载到为空我们可以把lua代码 后缀依然保留txt。

//正确方式(此时就会正确加载到 HelloWorld.lua.txt文件)
  TextAsset ta = Resources.Load<TextAsset>("HelloWorld.lua");
  LuaEnv luaenv = new LuaEnv();
  luaenv.DoString(ta.text);
  luaenv.Dispose();

但是这种方式比较麻烦,我们可以采用xlua内置加载方式loader去加载文件

 // require 关键字,加载并执行,此时不需要加后缀
        LuaEnv luaenv = new LuaEnv();
        luaenv.DoString("require 'HelloWorld'");
        luaenv.Dispose();

此时文件是在Resources文件夹下面,当我们文件放在其他地方的时候,这种方式就不好用了,xlua还为我们提供了自定义load的方式

 private void Start()
    {
        LuaEnv luaenv = new LuaEnv();
        luaenv.AddLoader(MyLoader);
        //系统会先执行我们自定义的loader,如果自定义loader返回的字节数组不为空,程序就不会再继续执行下去
        //系统会直接执行返回的字节数组中的程序
        luaenv.DoString("require'TestLua'");

        luaenv.Dispose();
	}
	
    private byte[] MyLoader(ref string filePath)
    {
        //绝对路径
        string path = Application.streamingAssetsPath + "/" + filePath + ".lua.txt";
        //相对路径
       // string path = @"相对路径" + filePath + ".lua.txt";
        //系统转字节数组
        return System.Text.Encoding.UTF8.GetBytes(File.ReadAllText(path));
    }
	

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值