示例 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. C库中strcpy函数的参数为NULL问题

    在标准C库的字符串处理函数 strxxx 一系列函数中,对参数传入NULL会导致程序崩溃. 如下代码中,无论那个参数为NULL,都会让程序崩溃,所以我们必须自己对参数进行传入前的检查. int mai ...

  2. JavaScript:今天是今年第几周?

    用js实现,今天是今年第几周? 基本思路: 1.当前时间 - 今年1月1日0时,拿到时间差(毫秒数) 2.时间差/7天毫秒数,向上取整 var d = new Date('2018-01-01 00: ...

  3. day44-pymysql模块的使用

    pymysql模块的使用 本节重点: pymysql的下载和使用 execute()之sql注入 增.删.改:conn.commit() 查:fetchone.fetchmany.fetchall 一 ...

  4. day33-常见内置模块二(hashlib、shutil、configparse)

    一.hashlib算法介绍 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 1.什么是摘要算法呢? 摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一 ...

  5. pycharm添加版本控制

  6. Zeosdbo-Query使用

    with DataModule1.Zlxz_zy_Query do        begin          Close;          SQL.Clear;          SQL.Add( ...

  7. Linux:简单的并发服务器实现

    我前两天实现了一个简单的服务器和一个对应的客户端,也简单的解决了一些错误检查和常用的函数的封装,但是那个服务器的一次只能连接一个客户端,鸡肋,太鸡肋了,今天我来实现可以连接多个客户端的服务器实例:多进 ...

  8. TCP/IP协议分层详解

    TCP/IP 和 ISO/OSI ISO/OSI模型,即开放式通信系统互联参考模型(Open System Interconnection Reference Model),是国际标准化组织(ISO) ...

  9. MySql出现大量LAST_ACK的解决办法

    前几日生产环境遇到一问题,网站的同步登录部分提示Can’t connect to MySQL server on ‘localhost’ (10060),第一反应就是可能过连接数据库的相关参数了,经检 ...

  10. A New Year, A New Accent!

    A New Year, A New Accent! Share Tweet Share Happy New Year!  Does your list of resolutions include i ...