热更新工具--lua文件迁移脚本学习笔记
一.简介
在Unity中,使用AssetBundle Browser打包时,这个工具无法识别.lua后缀的文件,lua代码无法直接打包。我们可以为lua文件添加上后缀.txt以修改lua文件格式的方式解决这个问题,文件内容不会修改。但是对于一个项目,lua文件非常多,这时显然一个一个修改太过于麻烦,因此这个脚本让我们可以在Unity中一键复制所有的lua文件到一个新文件夹中,并将这些lua文件添加到名称为lua的AB包中,迁移后直接使用AssetBundle Browser打包即可。
二.代码:
public class LuaCopyEditor : Editor { //lua文件路径 private static string luaPath = Application.dataPath + "/Lua/"; //存储的txt文件路径 private static string txtPath = Application.dataPath + "/LuaTxt/"; [MenuItem("XLua//Copy lua to txt file")] public static void CopyLuaToTxtFile(){ //校验新路径文件是否存在 if(!Directory.Exists(txtPath)) //不存在创建 Directory.CreateDirectory(txtPath); else{ //存在清空文件夹 string[] oldFiles = Directory.GetFiles(txtPath); for(int i = 0;i < oldFiles.Length;i ++) File.Delete(oldFiles[i]); } //调用根据地址复制并打包的方法 CopyLuaToTxtFile(luaPath); //刷新Unity AssetDatabase.Refresh(); //修改AB包打包 string[] txtFilePaths = Directory.GetFiles(txtPath); for(int i = 0;i < txtFilePaths.Length;i ++){ AssetImporter importer = AssetImporter.GetAtPath(txtFilePaths[i].Substring(txtFilePaths[i].IndexOf("Assets"))); if(importer != null) importer.assetBundleName = "lua"; } } /// <summary> /// 根据地址复制lua文件的方法 /// </summary> /// <param name="path"></param> private static void CopyLuaToTxtFile(string path){ //校验路径是否存在 if(!Directory.Exists(path)) return; //找一找当前文件夹中是否还有文件夹,有的话递归 string[] directories = Directory.GetDirectories(path); if(directories.Length > 0){ for(int i = 0;i < directories.Length;i ++){ CopyLuaToTxtFile(directories[i]); } } //得到每个lua文件路径 string[] luaFiles = Directory.GetFiles(path,"*.lua"); //遍历拷贝 string tempPath = ""; if(luaFiles.Length > 0) for(int i = 0;i < luaFiles.Length;i++){ //先遍历修改以下路径名,GetFiles得到的路径是拼接的,有的/有的\ StringBuilder builder = new StringBuilder(luaFiles[i]); for (int j = 0;j < builder.Length;j ++) if(builder[j].Equals('\\')) builder[j] = '/'; string correctPath = builder.ToString(); //得到新路径 tempPath = txtPath + correctPath.Substring(correctPath.LastIndexOf("/")+1) + ".txt"; File.Copy(correctPath,tempPath); } } }
三.注意事项
这个脚本在运行时如果xlua生成的代码没有清空会报错,记得清除所有xlua生成的脚本,在迁移完成后重新生成代码。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!