Unity游戏里面的场景、模型、图片等资源,是如何管理和加载的?

这就是本文要讲的资源管理方式——bundle打包和加载。

图片

Unity游戏资源管理有很多方式:

(1)简单游戏比如demo,可以直接在scene场景中引用住相关资源,然后打出真机包即可。

(2)场景静态引用资源过多会导致loding变慢,为了实现动态加载,加快场景加载速度,可以把资源放到Resources目录下。

(3)但这样还不行,因为没法实现热更新。实际项目大多使用的是AssetBundle,即AB打包方式。

热更新后面再展开讲,本文主要介绍下bundle打包和加载方案。

市面上有不同的AB打包方案和策略,这主要取决于游戏具体情况,包括游戏资源规模、游戏类型等。大致讲下几种方案的优缺点:

(1)直接打包prefab和scene。

优点是不用关心资源依赖关系,直接对prefab或scene打包即可,unity会自动把其依赖资源都打进同一个包里。缺点是造成资源冗余,包体变大。

(2)收集prefab和scene的依赖资源,先对依赖资源打包,再对prefab和scene打包,同时维护依赖关系,加载时要用到。

而对依赖资源打包又有不同的策略:比如将依赖资源和prefab/scene打到同一个包;将每个依赖资源单独打成一个个散列包;将被两个以上其他资源依赖的公共资源单独打一个包......

优点是可以定制适合游戏项目的依赖资源打包策略,可以避免资源冗余,减小包体;缺点是当依赖关系异常复杂时,可能会疯,比如场景A的依赖prefab A1-A100,prefab A1-A100各自又依赖一堆资源,且互相存在资源重叠......而且在加载Bundle时可能会引起内存峰值爆炸。

(3)各个项目的黑科技方案,模拟Unity的资源管理。篇幅有限,且属于进阶内容,本文就不深入讲了,有兴趣的可以关注公众号私聊或加微信。

这里来看一下Unity的资源打包和加载实现Demo例子。

Demo需求:一个场景,3个shader,使用AB方式打包,并加载到安卓真机显示。

(1)打包

首先,我们总共打2个AB包:shader单独打一个AB包,场景单独打一个AB包。Unity的打包API是BuildPipeline.BuildAssetBundles,打包代码如下:

图片

然后就可以点击进行打包

图片

打包结束之后,可以看到以下bundle,除了生成shaderbundle和scenebundle,还自动生成了与目录同名的AB,以及每个bundle对应的manifest文件。

图片

其中AB.manifest记录了本次打包的所有bundle资源及其依赖关系,该文件可用于加载。可以看到scenebundle依赖shaderbundle。

图片

其他两个manifest文件则是只用于编辑器打包调试辅助,包含每个bundle包含的asset资源、依赖的其他bundle资源。

图片图片

(2)加载

游戏启动之后显示一个UI界面,自动加载shader资源。同时提供一个按钮,点击之后加载场景。界面逻辑代码如下:

图片

加载场景,应该先加载其依赖资源。上面我们知道场景依赖shader,所以这里就跳过收集依赖关系的逻辑了。

先加载shader资源,这里使用的是AssetBundle.LoadFromFileAsync这个Unity API。

图片

然后加载场景资源。

图片

(3)工程构建

最后打出apk真机包,可以使用编辑器构造。

图片

最后生成如下apk包。即可安装到真机。

图片

最终结果如下:真机启动游戏,显示界面。

图片

点击按钮,加载场景。完成。

图片

本节内容就介绍到这里,有问题欢迎留言或私聊~~~

欢迎关注我的微信公众号【unity大话东游】,更多的unity技术类和渲染类文章等着你哦!

Demo示例——Bundle打包和加载的更多相关文章

  1. unity ab包打包和加载的简单学习示例

    闲着没事结合项目看了下unity AssetBundle打包和使用,写了一些测试例子,需要的可以拿去,导入一个空项目即可 链接:https://pan.baidu.com/s/1H85dnMNkRoW ...

  2. Unity热更新学习(一) —— AssetBundle 打包和加载

    理论不多说,网上,官方文档都有.  这里有一篇介绍很全面的文章:https://www.cnblogs.com/ybgame/p/3973177.html 示例和注意点记录一下,用到时以便查阅. 一. ...

  3. Unity最新版打包AssetBundle和加载的方法

    一.设置assetBundleName二.构建AssetBundle包三.上传AssetBundle到服务器四.把AssetBundle放到本地五.操作AssetBundle六.完整例子七.Asset ...

  4. Android之RecyclerView轻松实现下拉刷新和加载更多

    今天研究了下RecyclerView的滑动事件,特别是下拉刷新和加载更多事件,在现在几乎所有的APP显示数据列表时都用到了.自定义RecyclerView下拉刷新和加载更多听上去很复杂,实际上并不难, ...

  5. unity3d进行脚本资源打包加载

    原地址:http://www.cnblogs.com/hisiqi/p/3204752.html 本文记录如何通过unity3d进行脚本资源打包加载 1.创建TestDll.cs文件 public c ...

  6. linux 编译,链接和加载

    1.   序 最近在折腾各种.so,碰到了一些问题,一开始对于很多错误也没有头绪,茫然不知所措.索性化了一天多时间将<<程序员的自我修养—链接.装载与库>>中部分内容略读了一遍 ...

  7. unity创建和加载AssetBundle

    先说一下为什么要使用AssetBundle吧,以前做东西一直忽略这个问题,现在认为这个步骤很重要,代码是次要的,决策和为什么这样搞才是关键. 一句话概括吧,AssetBundle实现了资源与服务分离, ...

  8. XBIM 基于 WexBIM 文件在 WebGL 浏览和加载

    目录 xBIM 应用与学习 (一) xBIM 应用与学习 (二) xBIM 基本的模型操作 xBIM 日志操作 XBIM 3D 墙壁案例 xBIM 格式之间转换 xBIM 使用Linq 来优化查询 x ...

  9. Android Demo 下拉刷新+加载更多+滑动删除

    小伙伴们在逛淘宝或者是各种app上,都可以看到这样的功能,下拉刷新和加载更多以及滑动删除,刷新,指刷洗之后使之变新,比喻突破旧的而创造出新的,比如在手机上浏览新闻的时候,使用下拉刷新的功能,我们可以第 ...

随机推荐

  1. idea Transparent-native-to-ascii 是否需要勾选?

    目录 首先看一下官方对该选项的解释: 第一段是说标准的Java api是用ISO 8859-1编码.properties文件的,所以如果你在properties文件中可以使用转义序列表示没在这个编码中 ...

  2. Weblogic 升级更新补丁操作步骤

    转至:https://blog.csdn.net/allway2/article/details/91424413 Weblogic 升级更新补丁操作步骤: 1.上传补丁包2.kill weblogi ...

  3. 使用kind快速搭建本地k8s集群

    Kind是什么? k8s集群的组成比较复杂,如果纯手工部署的话易出错且时间成本高.而本文介绍的Kind工具,能够快速的建立起可用的k8s集群,降低初学者的学习门槛. Kind是Kubernetes I ...

  4. ASP.NET Core 6框架揭秘实例演示[15]:针对控制台的日志输出

    针对控制台的ILogger实现类型为ConsoleLogger,对应的ILoggerProvider实现类型为ConsoleLoggerProvider,这两个类型都定义在 NuGet包"M ...

  5. 携程applo配置

    1.官网文档 https://github.com/ctripcorp/apollo/wiki/%E5%88%86%E5%B8%83%E5%BC%8F%E9%83%A8%E7%BD%B2%E6%8C% ...

  6. Java 中线程池的 7 种创建方式!

    在 Java 语言中,并发编程都是通过创建线程池来实现的,而线程池的创建方式也有很多种,每种线程池的创建方式都对应了不同的使用场景,总体来说线程池的创建可以分为以下两类: 通过 ThreadPoolE ...

  7. 03-Eureka注册中心

    1.介绍 2.快速开始 2.1 pom文件依赖 <?xml version="1.0" encoding="UTF-8"?> <project ...

  8. Vue 源码解读(12)—— patch

    前言 前面我们说到,当组件更新时,实例化渲染 watcher 时传递的 updateComponent 方法会被执行: const updateComponent = () => { // 执行 ...

  9. 关于电脑上已安装SqlServer2005再安装SqlServer23008r2的处理情况

    安装SqlServer2008r2可参考这个回答,带图很详细  https://xinzhi.wenda.so.com/a/1518683577611182 1.先修改2005注册表.win+R打开运 ...

  10. springboot----二、Hello,SpringBoot!

    二.Hello,SpringBoot! 2.1.环境搭建 java version 1.8 maven springboot 最新版 开发工具:idea 2.2.创建基础项目说明 Spring官方提供 ...