[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文件)

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

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

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

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

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

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

测试代码:

[2]自定义Lua解析方式的更多相关文章

  1. Android初级教程:Android中解析方式之pull解析

    在安卓中有很多种解析方式.按照大方向有xml解析和json解析.而,细致的分,xml和json解析各有自己的很多解析方式.今天这一篇主要介绍xml解析中的pull解析.对于xml的解析方式,我之前在j ...

  2. Android:XML简介 & 解析方式对比(DOM、SAX、PULL)

    目录   示意图 1. 定义 XML,即 extensible Markup Language ,是一种数据标记语言 & 传输格式 2. 作用 对数据进行标记(结构化数据).存储 & ...

  3. Spring Boot 学习系列(05)—自定义视图解析规则

    此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 自定义视图解析 在默认情况下Spring Boot 的MVC框架使用的视图解析ViewResolver类是C ...

  4. SpringBoot让你的Bean动起来(自定义参数解析HandlerMethodArgumentResolver)

    SpringBoot让你的Bean动起来(自定义参数解析HandlerMethodArgumentResolver) 简介 我们 Controller 用到的一些 Bean 需要通过一定的方式去获取的 ...

  5. 解析prototxt文件的python库 prototxt-parser(使用parsy自定义文件格式解析)

    解析prototxt文件的python库 prototxt-parser https://github.com/yogin16/prototxt_parser https://test.pypi.or ...

  6. 10.AutoMapper 之自定义值解析器(Custom Value Resolvers)

    https://www.jianshu.com/p/3e7cf1d1f17d 自定义值解析器(Custom Value Resolvers) 虽然AutoMapper涵盖了相当多的目标成员映射方案,但 ...

  7. springmvc 源码分析(三) -- 自定义处理器映射器和自定义处理器适配器,以及自定义参数解析器 和错误跳转自定页面

    测试环境搭建: 本次搭建是基于springboot来实现的,代码在码云的链接:https://gitee.com/yangxioahui/thymeleaf.git DispatcherServlet ...

  8. 【Java EE】Day12 XML、约束(DTD、Schema)、解析方式、Jsoup、选择器(Selector、XPath)

    一.XML介绍 1.概述 Extensible Markup Language--可扩展标记语言 标记语言 :标签构成 可扩展:可以自定义标签 2.功能 存储数据 作为配置文件使用 作为数据载体在网络 ...

  9. Spring自定义参数解析器设计

    作者:京东零售 王鹏超 1.什么是参数解析器 @RequstBody.@RequstParam 这些注解是不是很熟悉? 我们在开发Controller接口时经常会用到此类参数注解,那这些注解的作用是什 ...

  10. iOS - 分析JSON、XML的区别和解析方式的底层是如何实现的(延伸实现原理)

    <分析JSON.XML的区别,JSON.XML解析方式的底层是如何实现的(延伸实现原理)> (一)JSON与XML的区别: (1)可读性方面:基本相同,XML的可读性比较好: (2)可扩展 ...

随机推荐

  1. S2DNAS:北大提出动态推理网络搜索,加速推理,可转换任意网络 | ECCV 2020 Oral

    S2DNAS最核心的点在于设计了丰富而简洁的搜索空间,从而能够使用常规的NAS方法即可进行动态推理网络的搜索,解决了动态推理网络的设计问题,可进行任意目标网络的转换   来源:晓飞的算法工程笔记 公众 ...

  2. #树状数组#CF461C Appleman and a Sheet of Paper

    题目传送门 分析 可以发现往左翻太多相当于往右翻一点,所以如果翻的位置超过一半那么打一个取反标记再另一边翻转, 用树状数组维护当前厚度,时间复杂度 \(O(n\log^2 n)\) 代码 #inclu ...

  3. #dp、树状数组#JZOJ 3859 孤独一生

    题目 将\(n\)座山(给定高度和\(n\))分成两个集合(按照原次序排列),然后在两个集合前加入海拔为0的平地 现在YC--一名julao,会两次从平地开始沿竖直方向跳到下一座山(别问我怎么做到的) ...

  4. Python 变量:创建、类型、命名规则和作用域详解

    变量 变量是用于存储数据值的容器. 创建变量 Python没有用于声明变量的命令. 变量在您第一次为其分配值时被创建. 示例 x = 5 y = "John" print(x) p ...

  5. Spring源码 20 手写模拟

    项目地址 https://gitee.com/liao-hang/hand-write-spring.git 模拟 Spring 注解 自动装配 Autowired @Target(ElementTy ...

  6. std::string 拼接字符串

    #include <iostream> #include <string> #include <sstream> int main() { // 方法一:12345 ...

  7. Qt线程简单使用二:QObject~创建任务类

      需求: 点击QPushButton按钮,QLabel中的数字,不断累加,一直到999.   做法: 创建任务类,用来完成任务,创建子线程,将任务类放到子线程中,点击QPushButton后,先发送 ...

  8. loguru 简单使用

    使用Python自带的 logging 来记录日志会比较麻烦,查了下 大家都在用 loguru,看了下文档,发现是挺好用的,记录下笔记 安装 pip install loguru     简单使用 f ...

  9. .NET Aspire预览5版本 发布

    2024年4月11日发布了.NET Aspire预览5版本,这个版本引入了对AWS的支持,并对Azure功能进行了改进.重点内容包括拆分Aspire.Hosting和Aspire.Hosting.Az ...

  10. docker 应用篇————具名挂载和匿名挂载[十三]

    前言 简单整理一下具名挂载和匿名挂载. 正文 来看一下匿名挂载. 这里-v指定了容器内部的路径,但是没有指定容器外部的路径,那么挂载到了什么地方. 用inspect 查看一下. 挂载到这个位置了. 然 ...