【问题标题】:Finding the list of Resources used in a Scene Unity查找场景 Unity 中使用的资源列表
【发布时间】:2018-10-27 05:54:19
【问题描述】:

我正在尝试减小构建大小。我确实压缩了一些纹理,这有助于我稍微减小尺寸。为了进一步减少,我想检查 Resources 文件夹中保存的文件。有多个 Resources 文件夹。随着时间的推移,我们在 Resources 文件夹中使用了不同的虚拟东西。这是我的计划:

  1. 列出所有基于场景的资源。

    我设法使用 Resources.LoadAll() 获取了资源列表 功能。

    我也得到了场景列表

    我不知道如何获取特定场景中使用的资源列表。

  2. 我可以与原始资源集进行比较,并可以得到未使用的资源列表。

关于如何做到这一点的任何想法?

【问题讨论】:

    标签: unity3d


    【解决方案1】:

    我不知道如何获取特定资源中使用的资源列表 场景。

    不能这样做,请不要花太多时间尝试这样做,因为:

    1。将资源文件放入 Resources 文件夹后,它将包含在最终构建中。

    2。从特定脚本中的场景调用Resources.Load 应该被视为在场景中使用该资源,但由于这是通过代码完成的,因此您无法计算它。没有办法将其视为已使用。

    3。将 Resources 文件夹之外的任何资源数据分配给脚本中的公共变量将使该资源文件包含在 Resources 文件夹中。即使这样,您仍然无法计算特定场景中使用的资源。


    您可以做的一件事是为每个场景创建一个 ResourcesManager 脚本,该脚本将保存资源文件,然后您可以使用它来检索场景使用的资源文件。尽管如此,由于我上面提到的 件事,这样做没有意义。如果您想减小构建大小,您可以使用 Resources 文件夹并开始使用 AssetBundle

    【讨论】:

      【解决方案2】:

      正如@Programmer 所说,这是不可能的。 Resources 文件夹中的所有内容都会自动包含在您的构建中,以便您可以通过代码中的Resources.load 加载资源。

      我建议养成不使用 Resources 文件夹的习惯,除非有必要通过 Resources.Load 加载该资源。这种做法将有助于减少构建中包含的未使用资源的数量。相反,使用 Unity Inspector 相互引用资源,在脚本中设置对公共变量的引用等等。

      您可以通过搜索Resources.Load 的实例来确定代码加载了哪些资源,从而进行一些重构。其他所有内容都可以移动到未命名为“Resources”的文件夹(将其称为其他任何名称,例如“Resources_Managed”,以避免将其视为special Unity folder)。


      注意:official Unity Tutorial for best practices for the Resources folder 表示不要使用资源系统:

      资源系统的最佳实践

      不要使用它。 [...]

      Resources 文件夹的易用性使其成为一个出色的系统,可以快速 原型。然而,当一个项目进入全面生产阶段时,使用 应该删除 Resources 文件夹。


      注意:它不会直接回答您的问题,但这个付费的 Unity 资产商店插件可能对您有用:Asset Usage Finder [我与此工具没有从属关系,尽管我确实将它用于我的项目。]。它无法列出特定场景中使用的所有资源,但它可以告诉您项目中引用了特定资源的位置。 (当然,它无法检测到是否通过Resources.Load 加载了资源)。源代码也包括在内,所以应该可以编写一个工具来完成你想要的(但工作量很大)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多