xLua | xLua Framework | 2 加载

0. 基础

0.1 不同加载模式 测试用

编辑器模式;打包模式;更新模式

public enum GameMode
{EditorMode,PackageBundle,UpdateMode,
}
0.2 加载资源步骤与接口

    
private void LoadAsset(string assetName, Action<Object> action)
{if (AppConst.GameMode == GameMode.EditorMode){
#if UNITY_EDITOREditorLoadAsset(assetName, action);
#elseDebug.LogError("Editor mode is not supported in the built version.");
#endif}else{StartCoroutine(LoadBundleAsync(assetName, action));}
}
0.3 解析版本文件

/// <summary>
/// 解析版本文件
/// </summary>
public void ParseVersionFile()
{//版本文件路径string url = Path.Combine(PathUtil.BundleResourcePath, AppConst.FileListName);string[] data = File.ReadAllLines(url);//解析文件信息for (int i = 0; i < data.Length; i++){string[] info = data[i].Split('|');BundleInfo bundleinfo = new BundleInfo(){AssetsName = info[0],BundleName = info[1]};//list特性:本质是数组但可动态扩容bundleinfo.Dependences = new List<string>(info.Length - 2);for (int j = 2; j < info.Length; j++){bundleinfo.Dependences.Add(info[j]);}m_BundleInfos.Add(bundleinfo.AssetsName, bundleinfo);}
}

1. 打包模式加载资源

递归异步加载资源:
根据资源的依赖关系递归加载所有需要的资源包,并最终加载目标资源,加载完成后调用回调函数处理加载资源。

/// <summary>
/// 递归异步加载资源
/// </summary>
/// <param name="assetName"></param>
/// <param name="action"></param>
/// <returns></returns>
IEnumerator LoadBundleAsync(string assetName, Action<Object> action = null)
{string bundleName = m_BundleInfos[assetName].BundleName;string bundlePath = Path.Combine(PathUtil.BundleResourcePath, bundleName);List<string> dependences = m_BundleInfos[assetName].Dependences;if (dependences != null && dependences.Count > 0){for (int i = 0; i < dependences.Count; i++){yield return LoadBundleAsync(dependences[i]);}}AssetBundleCreateRequest request = AssetBundle.LoadFromFileAsync(bundlePath);yield return request;AssetBundleRequest bundleRequest = request.assetBundle.LoadAssetAsync(assetName);yield return bundleRequest;//LogDebug.LogFormat("Package Bundle Mode Load Resource : {0}", assetName);action?.Invoke(bundleRequest?.asset);
}

2. 编辑器模式加载资源

/// <summary>
/// 编辑器模式加载资源
/// </summary>
/// <param name="assetName"></param>
/// <param name="actioin"></param>
#if UNITY_EDITOR
void EditorLoadAsset(string assetName, Action<Object> actioin = null)
{//LogDebug.LogFormat("Editor Mode Load Resource : {0}", assetName);Object obj = UnityEditor.AssetDatabase.LoadAssetAtPath(assetName, typeof(Object));if (obj == null)Debug.LogError("Asset name is not exist" + assetName);actioin?.Invoke(obj);
}
#endif

3. 更新模式加载资源

详见3 热更新

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

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

相关文章

c++ 求解质因数(细节详解)

定义 这里先来了解几个定义&#xff08;如已了解&#xff0c;可直接看下一个板块&#xff09; 因数&#xff1a;又称为约数&#xff0c;如果整数a除以整数b&#xff08;b0&#xff09;的商正好是是整数而没有余数&#xff0c;我们就说b是a的因数 质数&#xff1a;又称为素数…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十章 Linux设备树

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

儿童洗衣机什么牌子质量好?五款质量上乘机型推荐

在当今繁忙的生活中&#xff0c;儿童洗衣机已成为我们日常生活中不可或缺的家电。但是&#xff0c;面对市场上众多品牌的儿童洗衣机&#xff0c;那么&#xff0c;到底儿童洗衣机哪个牌子好&#xff1f;本次我将在这篇文章中探讨儿童洗衣机的选购策略&#xff0c;以帮助大家找到…

Logitech Media Server已更名为Lyrion Music Server

还以为是个新软件&#xff0c;折腾之后来才发现 &#xff0c;Lyrion Music Server 原名叫 Logitech Media Server&#xff0c;只是现在它已不再由 Logitech 拥有和维护&#xff0c;已完全移交给社区&#xff0c;因此更名&#xff0c;但简称依然还是 LMS。镜像目前还是延续了 lo…

Python Flask入门到精通:详细教程和实战案例

前言 Flask是一个轻量级的Web框架&#xff0c;用于快速开发Web应用程序。它的设计理念是简洁、灵活和易于扩展&#xff0c;非常适合于从简单的单页应用到复杂的大型项目。通过Flask&#xff0c;可以创建各种Web应用程序&#xff0c;比如博客、电子商务网站、RESTful API等。 …

在 LCD 上显示 png 图片-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板

在 LCD 上显示 png 图片 PNG 简介 无损压缩&#xff1a;PNG 使用 LZ77 派生算法进行无损压缩&#xff0c;确保图像质量不受损&#xff0c;且压缩比高 体积小&#xff1a;通过高压缩比&#xff0c;PNG 文件体积小&#xff0c;适合网络传输 索引彩色模式&#xff1a;PNG-8 格式…

结合el-upload上传组件,验证文件格式及大小

结合el-upload上传组件&#xff0c;验证文件格式及大小 效果如下&#xff1a; 代码如下&#xff1a; upgradeFirmwareInfo.vue页面 <template><div><el-dialog title"新增固件升级包" :visible.sync"dialogFormVisible"top"7vh&qu…

一年八百倍!刘邦不装杯!——早读(逆天打工人爬取热门微信文章解读)

台风格美&#xff0c;是比较倾向内陆的&#xff0c;大家注意安全 引言Python 代码第一篇 洞见 读懂了刘邦的人性哲学&#xff0c;你迟早脱离底层第二篇 看看新闻了 不小心越写越俗结尾 引言 这行情我TM真的越来越看不懂 现在的互联网太恐怖了 以前还好 很多散户都是懵懂懂的 现…

Java语言程序设计基础篇_编程练习题**15.28(显示一个转动的风扇)

**15.28(显示一个转动的风扇) 编写一个程序显示一个转动的风扇&#xff0c;如图15-33c所示。Pause、Resume和Reverse按钮用于暂停、继续和反转风扇的转动 可修改编程练习题14_9的代码 习题思路&#xff1a; 新建一个BorderPane&#xff0c;一个Pane和一个HBox&#xff0c;P…

javafx的ListView代入项目的使用

目录 1. 创建一个可观察的列表&#xff0c;用于存储ListView中的数据,这里的User是包装了用户的相关信息。 2.通过本人id获取friendid&#xff0c;及好友的id&#xff0c;然后用集合接送&#xff0c;更方便直观一点。 3.用for遍历集合&#xff0c;逐个添加。 4.渲染器&…

Python+Pytest+Allure+Yaml+Pymysql+Jenkins+GitLab运行原理

PythonPytestAllureYamlPymysqlJenkinsGitLab运行原理逻辑及调用关系 GitLab代码仓&#xff1a; Jenkins工作空间&#xff1a; 代码&#xff1a; 测试报告展示&#xff1a;

CTF ssrf 基础入门 (一)

0x01 引言 我发现我其实并不是很明白这个东西&#xff0c;有些微妙&#xff0c;而且记忆中也就记得Gopherus这个工具了&#xff0c;所以重新学习了一下&#xff0c;顺便记录一下吧 0x02 辨别 我们拿到一个题目&#xff0c;他的名字可能就是题目类型&#xff0c;但是也有可能…

Python3网络爬虫开发实战(1)爬虫基础

一、URL 基础 URL也就是网络资源地址&#xff0c;其满足如下格式规范 scheme://[username:password]hostname[:port][/path][;parameters][?query][#fragment] scheme&#xff1a;协议&#xff0c;常用的协议有 Http&#xff0c;https&#xff0c;ftp等等&#xff1b;usern…

数据库(MySQL)-DQL数据查询语言

DQL(Data Query Language 数据查询语言)的用途是查询数据库数据&#xff0c;如select语句。其中&#xff0c;可以根据表的结构和关系分为单表查询和多表联查。 单表查询 单表查询&#xff1a;针对数据库中的一张数据表进行查询 全字段查询 语法&#xff1a;select 字段名 fro…

C# 实现条件变量

C# 进程通信系列 第一章 共享内存 第二章 条件变量&#xff08;本章&#xff09; 第三章 消息队列 文章目录 C# 进程通信系列前言一、关键实现1、用到的主要对象2、初始化区分创建和打开3、变量放到共享内存4、等待和释放逻辑 二、完整代码三、使用示例1、线程同步控制2、进程…

Maven概述

目录 1.Maven简介 2.Maven开发环境搭建 2.1下载Maven服务器 2.2安装&#xff0c;配置Maven 1.配置本地仓库地址 2.配置阿里云镜像地址 2.3在idea中配置maven 2.4在idea中创建maven项目 3.pom.xml配置 1.项目基本信息 2.依赖信息 3.构建信息 4.Maven命令 5.打包Jav…

【PyTorch】图像多分类项目

【PyTorch】图像二分类项目 【PyTorch】图像二分类项目-部署 【PyTorch】图像多分类项目 【PyTorch】图像多分类项目部署 多类图像分类的目标是为一组固定类别中的图像分配标签。 目录 加载和处理数据 搭建模型 定义损失函数 定义优化器 训练和迁移学习 用随机权重进行训…

【HTML — 构建网络】HTML 入门

在本文中,我们将介绍 HTML 的绝对基础知识。为了帮助您入门,本文定义了元素、属性以及您可能听说过的所有其他重要术语。它还解释了这些在 HTML 中的位置。您将学习 HTML 元素的结构、典型的 HTML 页面的结构以及其他重要的基本语言功能。在此过程中,也将有机会玩转 HTML! …

SpringBoot 项目配置文件注释乱码的问题解决方案

一、问题描述 在项目的配置文件中&#xff0c;我们写了一些注释&#xff0c;如下所示&#xff1a; 但是再次打开注释会变成乱码&#xff0c;如下所示&#xff1a; 那么如何解决呢&#xff1f; 二、解决方案 1. 点击” File→Setting" 2. 搜索“File Encodings”, 将框…

Mac安装Hoomebrew与升级Python版本

参考 mac 安装HomeBrew(100%成功)_mac安装homebrew-CSDN博客 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 安装了Python 3.x版本&#xff0c;你可以使用以下命令来设置默认的Python版本&#xff1a; # 首先找到新安…