zoukankan      html  css  js  c++  java
  • 对 Unity 动态加载资源的调研

    1. 三种方式 #

    (1) 通过 Resources 模块, 调用它的 load 函数 :
    可以直接 load 并返回某个类型的 Object, 前提是要把这个资源放在 Resources 命名的文件夹下, Unity 不管有没有场景引用, 都会将其全部打包至安装包中. Resources.Load();

    (2) 通过 bundle 的形式 :
    将资源打成 asset bundle 放在服务器或本地磁盘, 然后使用 WWW 模块 get 下来, 然后从这个 bundle 中 load 某个 object. AssetBundle

    (3) 通过 AssetDatabase.loadasset :
    这种方式只在 Editor 范围内有效, 游戏运行时没有这个函数, 通常是在开发中调用使用的. AssetDatabase 资源数据库

    2. 各方式的对比 #

    (1) Resources 的方式需要把所有资源全部打包到安装包中, 对游戏的分包发布(微端)和版本升级(patch)是不利的, Unity 推荐的方式是不用它, 都用 bundle 的方式替代;

    (2) Bundle 的方式把资源打成几个小的 bundle, 用哪个就 load 哪个, 这样还能分包发布和 patch, 但是在开发过程中, 有时候不可能更新一个资源就打一次 bundle;

    (3) 既然在开发的过程中不可能每更新一个资源就打一次 bundle, 所以在 Editor 的环境下就可以使用 AssetDatabase 来模拟, 通常需要我们封装一个 dynamic resource 的 loader 模块, 在不同的环境下做不同实现.

    3. 动态资源的存放 #

    有时候需要存放一些自己的文件在磁盘上, 例如想把几个 bundle 放在初始的安装里, Unity 有一个 Streaming Asset 的概念, 用于提供存储接口的访问. 需要在编辑器建立一个 StreamingAssets 名字的文件夹, 把需要放在客户磁盘上的动态文件放在这个文件夹下, 这样, 安装之后这些文件就会在用户磁盘的指定位置, 这个位置可以通过 Application.streamingAssetsPath 来得到.

    Not End.

  • 相关阅读:
    安卓学习第三课——常见布局
    安卓学习第二课——短信发送器
    POJ3735【矩阵快速幂】
    Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined)【A,B,C,D】
    POJ3737【数学】
    HDU2489【状压枚举】
    POJ3734【状压枚举】
    HDU1598【最小生成树拓展】
    HDU1597【二分瞎搞】
    HDU3279【水】
  • 原文地址:https://www.cnblogs.com/isayes/p/6593774.html
Copyright © 2011-2022 走看看