[2]自定义Lua解析方式

news/2024/10/9 10:30:44

[2]自定义Lua解析方式

在上文中我们学会学会更改加载路径,加载对应文件夹下的Lua脚本。

默认解析加载的lua脚本存在的文件位置非AB包或者Resources文件夹下往往不能随包体更新,这显然不符合热更需要。因此自定义继承

tolua中lua脚本加载解析类LuaFileUtils来重写对应的lua脚本加载方法。

 public class LuaCustomLoad:LuaFileUtils{/// <summary>/// 优先从AssetBundle中加载(默认AB文件名称为lua) Resources文件夹下lua文件夹加载/// </summary>/// <param name="fileName"></param>/// <returns></returns>public override byte[] ReadFile(string fileName){//后缀名称检查处理if (!fileName.EndsWith(".lua")){fileName += ".lua";}//二进制文件流byte[] buffer = null;//解析路径名称string[] tempFilePath = fileName.Split('/');Debug.Log(tempFilePath[tempFilePath.Length - 1]);TextAsset luaText = LoadAssetBundleManager.Instance().LoadResource<TextAsset>("lua",tempFilePath[tempFilePath.Length - 1]);if (luaText != null){buffer = luaText.bytes;}//从Resources文件夹下加载Lua脚本if (buffer == null){Debug.Log("从Resources资源包中加载");string filePath = "Lua/" + fileName;//读取文件TextAsset textAsset = Resources.Load<TextAsset>(filePath);if (textAsset != null){buffer = textAsset.bytes;//卸载资源Resources.UnloadAsset(textAsset);}}return buffer;}}

将lua脚本打入Resorces文件夹下(.lua文件)

img

测试:此时还未将Lua脚本打入AssetBundle包 所以从Resources文件夹下加载lua脚本。(报错是因为AssetBundle文件不存在!后期可以完善此lua文件加载脚本逻辑)

image-20240505231011403

现在我们将lua脚本打入AssetBundle中

此处踩坑:Lua脚本打入AB包失败!将lua脚本后缀添加 [.txt] ,打包之前将toLua脚本清空。

image-20240505231519714

测试使用自定义脚本要点:

在使用LuaState之前先实例化自定义的加载方法:

image-20240505235459972

这样,继承的LuaFileUtils的自定义类会调用其构造函数,将子类实例化的this赋值给instance,从而执行子类重写的ReadFile方法。

img

测试代码:

image-20240505235825015

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/27960.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

MuMu模拟器12如何将电脑的文件/图片导入到模拟器根目录

前言全局说明官方说明:https://mumu.163.com/help/20230427/35047_1085406.html一、说明二、 部分用户在使用MuMu模拟器12时,可能会需要将电脑的图片或文件一类的,从电脑内导入到模拟器根目录中,但是不知道具体该如何操作,遇到这类情况的用户,可以参考以下步骤操作。第一…

线性表

数据结构 代码--线性表#define N 10 typedef struct Node {int data;struct Node*next; }NODE; int Get_Data(int i); //定义省略 Node*Create_u() {int i;NODE*p,*Head=NULL;for(i=0;i<N;i++){VP=New NODE;P->Data=Get_Data(i);_______①_________;________②________;…

【第二章】利用用户行为数据

基于用户行为分析的推荐算法是个性化推荐系统的重要算法,学术界一般将这种类型的算法称为协同过滤算法。顾名思义,协同过滤就是指用户可以齐心协力,通过不断地和网站互动,使自己的推荐列表能够不断过滤掉自己不感兴趣的物品,从而越来越满足自己的需求。 2.1 用户行为数据简…

20240505-感谢你为我郁闷的一天增添了一份快乐

哈哈哈我宣布这将会是我五月份见过的最好笑的笑话:来源:我在很久以前写的 Luogu B2077 角谷猜想 的题解评论区。 因为当时运算过程中的数据保证在 int 范围,我就用了 int,但是现在不行了,所以会 T。本文来自博客园,作者:A_box_of_yogurt,转载请注明原文链接:https://w…

魔百盒E900V22D刷机教程

参考:https://www.mydigit.cn/thread-305003-1-1.html https://www.52pojie.cn/forum.php?mod=viewthread&tid=1659478 https://www.znds.com/tv-1241881-1-1.html https://www.znds.com/tv-1241104-1-1.html >之前家里装移动宽带不是送了个机顶盒嘛,之前还一不小心点…

c++综合实验报告友元

综合性、设计性实验报告 专业:计算机科学与技术 一、实验目的: 1.熟练掌握友元函数和友元类设计的方法 2.掌握友元函数的含义,友元函数和成员函数的区别。 3.掌握友元类的含义。 二、实验仪器或设备:微型计算机 三、总体设计(设计原理、设计方案及流程等) 实验内容: 定…

分层架构上的探索实践

简介 因为身处在应对ToB需求的SAAS行业,复杂的需求在代码上造成的混乱始终是我们的一大困扰,所以我们在一些项目中尝采用整洁架构的分层模式对部分代码做了一些改善和实践。 在这篇文章中我来分享一下我在分层架构上的思考,一些实践方法。 为什么要分层? 我们都知道ToB行业…

社区版pycharm下载安装教程

参考:韩顺平——下载 在浏览器输入 www.jetbrains.com/进入pycharm官网 指向Developer Tools,点击Pycharm 点击Download 为了更好得跟踪韩老师的教程,我这里选择下载与韩老师一致的版本(对版本无要求的话直接点击download)找到2023.2.2的版本,在PyCharm Community Editio…