U3D游戏运行时资源是如何从AB中加载出来的

以安卓为例

1,游戏启动,自定义版本管理器去安卓的持久化目录下查找我们自定久的版本管理文件 rep.db,若该文件不存在,说明这是游戏第一次启动,于是就把streammingAssets下的LUA文件夹和resoure文件夹及rep.db及版本号文件version.txt及资源列表文件resource_list.txt拷到持久化目录下。

若发现rep.db存在,则去WEB资源服务器上取资源版本号,并与version.txt中的版本号对比,如不一致,则去对比服务器与本地的resource_list.txt(每个文件对应一个MD5),少的删除,多的增加,将资源从WEB服务器上拉到持久化目录,并重新写一个rep.db,记录了LUA文件,资源文件的相对-绝对路径映射,相对路径就是资源打包时指定的资源名称,比如打一个资源包 assets/res/pictures,下面有一组图片,分别命名为 assets/res/pictures/grass.png,assets/res/pictures/stone.png等,并将资源名与资源包的对应关系写到一个配置文件 asset_2_bundle.txt中,以便加载时使用。

资源打包时,对AB包内的资源名称并没有什么限制条件,既可以使用带路径的名称,也可使用一个简单名称,但在游戏中,因为资源很多,为防止资源重名,我们要使用带路径资源名。

2,资源更新完毕,游戏运行,当需要加载" assets/res/pictures/grass.png"这张图片时,根据这个路径名去 asset_2_bundle.txt中去查找对应的AB包名,然后再根据AB包名去rep.db中查找AB包在安卓上的绝对路径名(持久化目录下),然后createBundleFromefile创建这个AB包,并缓存它。然后用AB.LOADASSET("assets/res/pictures/grass.png")加载资源,

因为assets/res/pictures/grass.png这个资源名是我们在打AB包时指定的,因此AB可以找到它

原文地址:https://www.cnblogs.com/timeObjserver/p/9484426.html

时间: 2024-10-31 16:52:38

U3D游戏运行时资源是如何从AB中加载出来的的相关文章

安装java后,运行时提示找不到或无法加载主类 com.sun.tools.javac.Main

这个在我们班有不少同学遇到,想到初学者这种问题可能不在少数,我这里就对这个问题说一下原因与解决方法吧. 原因很简单: 首先,JDK是开发环境  JRE是运行环境 JDK安装包中包含JRE. 安装JDK的时候会提示两次安装目录,第一次是JDK安装目录,第二次是JRE的安装目录.遇到这种问题的朋友是把JDK与JRE安装在了同一目录下导致的. 解决办法: JKD安装时将两次目录选择放在不同的目录就可以了,比我的JDK安装目录是D:/JAVA/JDK    JRE安装目录是D:/JAVA/JRE 这样问

Cocos2d-x3.0游戏实例之《别救我》第九篇——从tmx文件中加载关卡怪物

上一篇我们已经制作好tg1.tmx文件了,现在就要使用它了. 笨木头花心贡献,啥?花心?不呢,是用心~ 转载请注明,原文地址: http://www.benmutou.com/blog/archives/944 文章来源:笨木头与游戏开发 很抱歉,我们又要新建2个类了,我已经尽力少新建类了,毕竟是教程,类越多越容易混乱. 我们要新建一个Monster类,以及一个MonsterLayer类,专门添加Monster对象. Monster类 来看看Monster.h文件: #ifndef Monste

java编译通过,为什么运行却提示找不到或无法加载主类?

https://www.zhihu.com/question/36537093 这边提供一个关于程序中含有package关键字,使用“终端”运行程序时出现“找不到或无法加载主类”,而使用Eclipse软件可以正常运行程序的可能解决办法. 例如程序名为HelloWorldTest.java,程序中含有package helloWorld语句,而该包位于javatest目录下,即javatest/helloWorld/HelloWorldTest.java. 应该在java文件所在的目录运行java

编译和运行java文件 找不到或无法加载主类

这边提供一个关于程序中含有package关键字,使用"终端"运行程序时出现"找不到或无法加载主类",而使用Eclipse软件可以正常运行程序的可能解决办法. 例如程序名为HelloWorldTest.java,程序中含有package helloWorld语句,而该包位于javatest目录下,即javatest/helloWorld/HelloWorldTest.java. 应该在java文件所在的目录运行javac指令,即在helloWorld目录中运行java

MyBatis Java不同方式加载文件时的路径格式问题、Mybatis中加载.properties文件

public class LoadPropTest { public static void main(String[] args) throws IOException { //一.Properties的load方法加载文件输入流 Properties props=new Properties(); File file1=new File("F:/Program Files/Java/IdeaProjects/MyBatisDemo/src/db.properties"); File

页面加载时让其显示笼罩层与加载等待图片

页面加载时让其显示笼罩层与加载等待图片(结局比较完美,过程很坎坷,所以一定总结整理下,备用): 用了ajax异步,是因为js内容不能即时的显示出来,因为js是单线程,要把队列中的任务执行完后才会执行刚才对js的处理 要用beforeSend,complete的时候必须要用ajax异步 beforeSend: function () {},//程序一开始便会执行该函数,使用该方法必须使用异步ajax complete: function () {},//complete在success或error

仿微信中加载网页时带线行进度条的WebView的实现

finddreams:http://blog.csdn.net/finddreams/article/details/44172639 为了仿微信中加载网页时带进度条的WebView的实现,首先我们来看一下微信中的效果是什么样的: 明确需求之后,我们来开始动手做,首先我们来自定义一个带进度条的WebView,名字为ProgressWebView: /** * @Description:带进度条的WebView * @author http://blog.csdn.net/finddreams *

CAD调试时抛出“正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码”异常的解决方法

这些天重装了电脑Win10系统,安装了CAD2012和VS2012,准备进行软件开发.在调试程序的时候,CAD没有进入界面就抛出 “正试图在 os 加载程序锁内执行托管代码.不要尝试在 DllMain 或映像初始化函数内运行托管代码” 查看网上相关文章说是要关掉 异常--Managed Debugging Assistants,但是仍然不可以使用. 前段时间有过将软件数据库放到C盘,变成数据库只读无法写入数据的经历.是不是CAD也只读了,无法写入调试Dll呢? 随后将CAD装到了D盘,果真问题解

java执行时的两个常见问题(无法加载主类)

问题1:javac不是内部或者外部命令 问题2:找不到或无法加载主类*** 这两个问题都和jdk的配置有关,一个是path一个是classpath.path:去哪里找编译或运行等工具(必须设置),classpath:去哪里找需要运行的class文件(java5开始可不设置).pat配置错误,就会出现问题1,classpath配置错误就会出现问题二.当配置时点“.”表示当前路径,如果classpath配置时,当前路径在前就会先找当前路径,如果在后的话,就会先找配置的路径.出现这两个问题时,就查看自