- 创建自定义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));
}
}
- TestLoder
文件我们放在了streamingAssets目录下

print('自定义Loder位置');
我们看看运行之后,是否达到了我们想要的效果

- 这个我们是从本地读取的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);
}

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

被折叠的 条评论
为什么被折叠?



