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可以找到它
U3D游戏运行时资源是如何从AB中加载出来的的更多相关文章
- Docker运行时资源限制
Docker 运行时资源限制Docker 基于 Linux 内核提供的 cgroups 功能,可以限制容器在运行时使用到的资源,比如内存.CPU.块 I/O.网络等. 内存限制概述Docker 提供的 ...
- Java初学者作业——实现控制台的猜数字游戏。游戏运行时产生一个1~100之间的随机数字
返回本章节 返回作业目录 需求说明: (1)实现控制台的猜数字游戏.游戏运行时产生一个1-100之间的随机数字 (2)要求用户从控制台输入数字,若输入的数字比随机数小,则输出"太小了,再大一 ...
- 【python游戏编程之旅】第四篇---pygame中加载位图与常用的数学函数。
本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 在上一篇博客中,我们学习了pygame事件与设备轮询.http://www.cnblogs.com/msxh ...
- java编译通过,为什么运行却提示找不到或无法加载主类?
java编译通过,为什么运行却提示找不到或无法加载主类? https://www.zhihu.com/question/36537093 这边提供一个关于程序中含有package关键字,使用“终端”运 ...
- 编译和运行java文件 找不到或无法加载主类
这边提供一个关于程序中含有package关键字,使用“终端”运行程序时出现“找不到或无法加载主类”,而使用Eclipse软件可以正常运行程序的可能解决办法. 例如程序名为HelloWorldTest. ...
- MyBatis Java不同方式加载文件时的路径格式问题、Mybatis中加载.properties文件
public class LoadPropTest { public static void main(String[] args) throws IOException { //一.Properti ...
- 【记录】VS2012新建MVC3/MVC4项目时,报:此模板尝试加载组件程序集“NuGet.VisualStudio.Interop...”
最近电脑装了 VisualStudio "14" CTP,由于把其他版本的 VS 卸掉,由高到低版本安装,当时安装完 VisualStudio "14" CTP ...
- 『转载』从内存资源中加载C++程序集:CMemLoadDll
MemLoadDll.h #if !defined(Q_OS_LINUX) #pragma once typedef BOOL (__stdcall *ProcDllMain)(HINSTANCE, ...
- 解决eclipse部署maven时,src/main/resources里面配置文件加载不到webapp下classes路径下的问题
解决eclipse部署maven时,src/main/resources里面配置文件加载不到webapp下classes路径下的问题. 有时候是src/main/resources下面的,有时候是sr ...
随机推荐
- MQ中间件选型
如果Java项目,数据量不大,用ActiveMQ,相对简单.支持JMS. 如果对性能.可靠性有一定要求,用RabbitMQ. 如果对性能有很高要求,甚至可牺牲一些可靠性,选kakfa. 在当前大数据时 ...
- ZedGraph使用经验(转帖)
更改背景色 myPane.Fill = new Fill(Color.Black); Zedgraph 柱状图的宽度 gp.BarSettings.ClusterScaleWidth = 2; ...
- POJ2392 Space Elevator
题目:http://poj.org/problem?id=2392 一定要先按高度限制由小到大排序! 不然就相当于指定了一个累加的顺序,在顺序中是不能做到“只放后面的不放前面的”这一点的! 数组是四十 ...
- Microsoft Dynamics CRM 2013 相关安装包下载
90-day trial keys:Microsoft Dynamics CRM Workgroup Server 2013 (5 CAL limit):NX77Y-BTBCV-JP3T3-8W7JH ...
- SpringCloud初体验:五、Sidecar 将 PHP 这类非 Java 生态语言的服务接入 Spring Cloud
先起一个 Sidecar 服务,一个PHP服务一个应用,和PHP服务部署在同一台机子,通过 localhost 访问,这样就解决了网络开销,相当于本地进程间调用 Sidecar 服务比较简单, 1.这 ...
- 一段简单的代码记录如何通过 js 给 HTML 设置自定义属性,并且通过点击事件获取到所设置的自定义属性值
for (var i = 0; i <= 5; i++) { const divJoinDay = document.createElement("div"); divJoi ...
- 【python】实例-答题系统
#!/usr/bin/env python from operator import add, sub from random import randint, choice ops = {'+': a ...
- java 使用POI读写Excel文件(兼容2003、2007)
package com.jadyer.demo; import java.io.File; import java.io.FileOutputStream; import java.io.IOExce ...
- EINTR与ERESTARTSYS
驱动中如果down_interruptible之类的函数被信号中断,驱动可以返回-EINTR或-ERESTARTSYS. 区别在于: 若返回-EINTR,应用程序执行的系统调用会返回表示错误的值,且e ...
- 垃圾收集器之:CMS收集器
HotSpot JVM的并发标记清理收集器(CMS收集器)的主要目标就是:低应用停顿时间.该目标对于大多数交互式应用很重要,比如web应用.在我们看一下有关JVM的参数之前,让我们简要回顾CMS收集器 ...