zoukankan      html  css  js  c++  java
  • AssetBundle Manager and Example Scenes

    示例 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 加载器基础,它需要在场景变化的以后依然存在。

    点击下载

  • 相关阅读:
    ceph集群jewel版本 rbd 块map 报错-故障排查
    基本的Ceph性能测试工具和方法
    dd命令的高级应用
    Ceph recover的速度控制
    Linux mount命令
    Centos7.2:搭建Ceph管理系统Inscope
    rpm --import /etc/pki/rpm-gpg/RPM* 有什么用?
    dd命令的解释
    Playbooks 中的错误处理
    Ansible之Playbooks的when语句
  • 原文地址:https://www.cnblogs.com/jiahuafu/p/9115106.html
Copyright © 2011-2022 走看看