示例 1:加载资源

  • 使用 “Asset/AssetBundles/Simulation Mode” 菜单打开模拟模式
  • 打开 “AssetBundleSample/Scenes/AssetLoader” 场景
  • 注意场景是个空的只有一个主摄像机,方向光和游戏对象 “Loader”
  • 进入 PlayMode
  • 然后会注意到一个 cube 已经从 AssetBundle 加载到场景里面了

这个场景是被 “LoadAssts.cs” 脚本驱动的。

在脚本编辑器里面打开脚本 “AssetBundleSample/Scripts/LoadAssets.cs”

脚本里有两个公共变量: public string assetBundleName; 和 public string assetName;

  • public string assetBundleName; 保存了要被加载的 AssetBundle 的名字
  • public string assetName; 保存了要已加载的 AssetBundle 中加载的资源的名字

这个脚本是由一个 Start() 函数和被 Start() 调用的两个协程组成的。Initialize() 调用了 DontDestoryOnLoad(), 设置了 AssetBundle 的路径和初始化了 AssetBundle 清单。在 InstantiateGameObjectAsync() 中,如果资源不为空,AssetBundleManager.LoadAssetAsync()调用资源和 AssetBundle 的名字。

重点注意下,在 “AssetBundleSample/Assets” 路径下查看 “MyCube” 资源,会发现 “MyCube” 依赖于 “MyMaterial”,而 “MyMaterial” 依赖于 “UnityLogo”。脚本中只有 “MyCube” 资源被调用,但是所有的依赖资源都被正确的加载了。

AssetBundle 的路径怎么设置也值得注意下。当场景在编辑器中或者从一个开发版 Build 中运行时,这段代码会给本地资源服务器设置 AssetBundle 的位置。(更多关于开发版 Build,请查看发布 Builds 文档。)模拟模式开启后,AssetBundle 会在编辑器中被模拟,这个设置将不会被使用。

对 DontDestoryOnLoad() 作用的理解。虽然在这个非常简单的脚本中并不是绝对需要它,但是他的存在是假设这个脚本会作为一个更复杂的项目的 AssetBundle 加载器基础,它需要在场景变化的以后依然存在。

示例 2:加载场景

  • 使用 “Asset/AssetBundles/Simulation Mode” 菜单打开模拟模式
  • 开始 “AssetBundleSample/Scenes/SceneLoader” 场景
  • 注意场景是个空的只有一个主摄像机,方向光和游戏对象 “Loader”
  • 开打 PlayMode
  • 然后会注意到一个 cube 和 plane 已经从 AssetBundle 加载到场景里面了

这个场景被 “LoadScene.cs” 脚本驱动着。

在脚本编辑其中打开 “AssetBundleSample/Scripts/LoadScenes.cs” 脚本。

脚本里有个两个公共变量:public string sceneAssetBundle; 和 public string sceneName;

  • sceneAssetBundle; 保持了要加载的 AssetBundle 的名字
  • sceneName; 保持了要从已加载的 AssetBundle 里加载的场景的名字

这个脚本是有一个 Start() 函数和被 Start() 调用的两个协程组成的。Initialize() 调用了 DontDestoryOnLoad(), 设置了 AssetBundle 的路径和初始化了 AssetBundle 清单。在 InitializeLevelAsync() 里使用 AssetBundleManager.LoadLevelAsync() 调用场景名字和 isAdditive 来请求一个场景。如果场景为空,AssetManager 会在控制台显示出错误,然后协程结束。

重点注意下,在 “AssetBundleSample/Assets” 路径下查看 “MyCube” 资源,会发现 “MyCube” 依赖于 “MyMaterial”,而 “MyMaterial” 依赖于 “UnityLogo”。只有 “TestScene” 场景被请求了。但在 “TestScene” 中的 “Cube” 和所有依赖的资源都被 AssetBundle Manager 正确的加载了。

AssetBundle 的路径怎么设置也值得注意下。当场景在编辑器中或者从一个开发版 Build 中运行时,这段代码会给本地资源服务器设置 AssetBundle 的位置。(更多关于开发版 Build,请查看 发布 Builds 文档。)模拟模式开启后,AssetBundle 会在编辑器中被模拟,这个设置将不会被使用。

对 DontDestoryOnLoad() 作用的理解。虽然在这个非常简单的脚本中并不是绝对需要它,但是他的存在是假设这个脚本会作为一个更复杂的项目的 AssetBundle 加载器基础,它需要在场景变化的以后依然存在。

点击下载

AssetBundle Manager and Example Scenes的更多相关文章

  1. 【Unity3D技术文档翻译】第1.6篇 使用 AssetBundle Manager

    上一章:[Unity3D技术文档翻译]第1.5篇 使用 AssetBundles 本章原文所在章节:[Unity Manual]→[Working in Unity]→[Advanced Develo ...

  2. AssetBundle Manager

    [AssetBundle Manager] AssetBundleManager是一个款Unity公司制作的Unity库. 1.Simulation Mode The main advantage o ...

  3. AssetBundle Manager & Example Scenes

    https://www.assetstore.unity3d.com/en/#!/content/45836 https://docs.unity3d.com/Manual/AssetBundlesI ...

  4. Unity资源打包学习笔记(一)、详解AssetBundle的流程

    转载请标明出处:http://www.cnblogs.com/zblade/ 本文参照unity官网上对于assetBundle的一系列讲解,主要针对assetbundle的知识点做一个梳理笔记,也为 ...

  5. [译]使用AssetBundle Manader

    AssetBundle and the AssetBundle Manager 介绍 AssetBundle允许从本地或者远程服务器加载Assets资源,利用AssetBundles技术,Assets ...

  6. Unity5系列资源管理AssetBundle——加载

    上次我们进行了AssetBundle打包,现在我们还把打包的资源加载到我们的游戏中.在加载之前,我们需要把打包好的Bundle包裹放到服务器上,如果没有,也可以使用XAMPP搭建本地服务器. 加载的A ...

  7. 【Unity游戏开发】AssetBundle杂记--AssetBundle的二三事

    一.简介 马三在公司大部分时间做的都是游戏业务逻辑和编辑器工具等相关工作,因此对Unity AssetBundle这块的知识点并不是很熟悉,自己也是有打算想了解并熟悉一下AssetBundle,掌握一 ...

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

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

  9. 【Unity3D技术文档翻译】第1.7篇 AssetBundles 补丁更新

    上一章:[Unity3D技术文档翻译]第1.6篇 使用 AssetBundle Manager 本章原文所在章节:[Unity Manual]→[Working in Unity]→[Advanced ...

随机推荐

  1. Appium环境安装

    Appium 是开源的.跨平台的.多语言支持的 移动应用 自动化工具 原生app,如计算器 混合(Hybrid)app 内嵌web + 原生 移动 web app 手机浏览器打开的网址 安装appiu ...

  2. Leetcode 题解 Longest Substring Without Repeating Characters_需要重做

    最长的没有重复的字符串. 这个题其实不难.但是我第二次做了,硬是把它做出了难的感觉... 变量命名要合理.可读性强.

  3. 为什么MySQL不推荐使用子查询和join

    前言: 1.对于mysql,不推荐使用子查询和join是因为本身join的效率就是硬伤,一旦数据量很大效率就很难保证,强烈推荐分别根据索引单表取数据,然后在程序里面做join,merge数据. 2.子 ...

  4. Java中Asm包有什么用?

    ASM能做什么 我们都知道,一般情况下,Class文件是通过javac编译器产生的,然后通过类加载器加载到虚拟机内,再通过执行引擎去执行. 现在我们可以通过ASM的API直接生成符合Java虚拟机规范 ...

  5. Hive安装与配置--- 基于MySQL元数据

    hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行. 其优点是学习成本低,可以通过 ...

  6. 【388】※ Some useful websites for learning Python

    Ref: Python Tips 1. *args and **kwargs 2. Debugging 3. Generators 4. Map, Filter and Reduce 5. set D ...

  7. [ 测试思维 ] 启发式测试策略模型(HTSM)

    什么是HTSM 启发式测试策略模型(Heuristic Test Strategy Model,简称HTSM)是测试专家James Bach提出的一组帮助测试设计的指南(Guide line).HTS ...

  8. JAVAWEB 一一SpringMVC(XML配置)

    web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="2 ...

  9. git初使用总结感悟

    ####首先说说git在工作中的一般流程1.首先就是进入新公司之后,要了解公司用的是什么代码托管,比如gitlab或者github(私有库花钱) 2.找技术同时把你加入到工作项目组并给你权限(一般都是 ...

  10. SqlServer数据库碎片整理——BCC SHOWCONTIG

    SQLServer提供了一个数据库命令——DBCC SHOWCONTIG——来确定一个指定的表或索引是否有碎片.  示例: DBCC SHOWCONTIG语法: 显示指定的表的数据和索引的碎片信息.  ...