xLua 通过自定义Loader加载服务器和本地指定目录的Lua脚本(三)

本文介绍如何在Unity中使用XLua框架结合自定义Loader加载Lua脚本,包括从本地和服务器读取Lua文件的方法。通过创建自定义Loader类,实现Lua源文件的动态加载,适用于游戏开发中的热更新需求。
  1. 创建自定义Loder
using UnityEngine;
using XLua;
using System.IO;

public class CreatrLoder : MonoBehaviour
{

    void Start()
    {
        LuaEnv luaEnv = new LuaEnv();

        luaEnv.AddLoader(MyLoder);
		//我们将TestLoder放在streamingAssets目录下,使用自定义的Loder将Lua源文件加载出来
        luaEnv.DoString("require 'TestLoder'");

        luaEnv.Dispose();

    }
	//自定义的Loder
    private byte[] MyLoder(ref string filePath)
    {
        string absPath = Application.streamingAssetsPath + "/" + filePath + ".lua.txt";

        return System.Text.Encoding.UTF8.GetBytes(File.ReadAllText(absPath));
    }
}
  1. TestLoder
    文件我们放在了streamingAssets目录下
    在这里插入图片描述
print('自定义Loder位置');

我们看看运行之后,是否达到了我们想要的效果
在这里插入图片描述

  1. 这个我们是从本地读取的Lua文件,当然也可以放在服务器上读取。
using UnityEngine;
using XLua;
using System.IO;
using System.Net;

public class CreatrLoder : MonoBehaviour
{

    void Start()
    {
        LuaEnv luaEnv = new LuaEnv();

        //luaEnv.AddLoader(MyLoder);
        luaEnv.AddLoader(MyLoderFromTheServer);

        luaEnv.DoString("require 'TestLoderFromTheServer'");

        luaEnv.Dispose();

    }

    private byte[] MyLoder(ref string filePath)
    {
        string absPath = Application.streamingAssetsPath + "/" + filePath + ".lua.txt";

        return System.Text.Encoding.UTF8.GetBytes(File.ReadAllText(absPath));
    }

    /// <summary>
    /// 读取文件从服务器
    /// </summary>
    /// <param name="_url"></param>
    private byte[] MyLoderFromTheServer(ref string filePath)
    {
        string url = "http://192.168.0.191:88/";
        string absPath = url + filePath + ".lua.txt";
        print(absPath);
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(absPath);
        request.Method = "GET";
        request.ContentType = "application/json";
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        StreamReader reader = new StreamReader(response.GetResponseStream());
        string content = reader.ReadToEnd();
        print(content);
        return System.Text.Encoding.UTF8.GetBytes(content);
    }

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贪小心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值