Analyze是一个工具,收集有关您的项目的可寻址布局的信息。在某些情况下,Analyze可能会采取适当的措施来清理项目的状态。在其他情况下,Analyze纯粹是一种信息工具,使您可以对可寻址布局做出更明智的决策。
1、使用分析(Using Analyze)
在编辑器中,打开 Addressables Analyze 窗口(Window > Asset Management > Addressables > Analyze),或通过可寻址对象组(Addressables Groups)窗口单击 Tools > Analyze 按钮将其打开。
Analyze窗口显示Analyze规则列表,以及以下操作:
- 分析所选规则
- 清除所选规则
- 修复所选规则
1.分析操作
分析操作是规则的信息收集步骤。在一个或一组规则上运行此操作将收集有关构建、依赖关系图等的数据。每个规则负责收集所需的数据并将其作为AnalyzeResult对象的列表进行展示。
在分析步骤中,不应采取任何操作来修改任何数据或项目状态。根据在此步骤中收集的数据,修复操作可能是适当的操作过程。但是,某些规则仅包含分析步骤,
因为无法根据收集到的信息采取合理、适当和普通的。将场景检查为可寻址的重复依赖项和资源检查为可寻址的重复依赖项是此类规则的示例。
纯粹是信息性的并且不包含修复操作的规则被归类为“不可修复的规则”。那些具有修订操作的分类为“可修复规则”。
2.清除步骤
此操作将删除分析收集的所有数据并相应地更新TreeView。
3.修复操作
对于“可修复规则”,您可以选择进行修复操作。这将使用在分析步骤中收集的数据来执行任何必要的修改并解决问题。
Check Duplicate Bundle Dependencies是可修复规则的一个示例,因为可以采取合理适当的操作来解决分析中检测到的问题。
2、提供分析规则(Provided Analyze rules)
1.可修复的规则
检查重复的Bundle依赖关系(Check Duplicate Bundle Dependencies)
该规则通过扫描所有组BundledAssetGroupSchemas并预测资源组布局来检查可能重复的资源。这实质上需要触发完整的构建,因此这种检查既耗时又需要大量的性能。
问题:重复的资源是由于不同组中的资源共享依赖关系而产生的,例如,两个预制件共享存在于不同可寻址组中的材料。这些材料(及其任何依赖项)将被放入包含预制件的两个组中。为避免这种情况,必须使用一个预制件或在其自己的空间中将材料标记为“可寻址”,从而将材料及其依赖项放在单独的“可寻址”组中。
解决方法:如果此检查发现任何问题,则对此规则运行修复操作将创建一个新的可寻址组,在其中可移动所有从属资源。
例外:如果您的资源包含多个对象,则不同的组可能仅提取资源的一部分,而实际上没有重复。具有许多网格的FBX就是一个例子。如果一个网格位于“GroupA”中,另一个网格位于“GroupB”中,则此规则将认为FBX是共享的,并且如果运行修复操作,则将其提取到其自己的组中。在这种情况下,运行修复操作实际上是有害的,因为这两个组都没有完整的FBX资源。
另请注意,重复资源并一定总是一个问题。如果资源永远不会被同一组用户请求(例如:特定于区域的资源),那么可能需要重复的依赖关系,或者至少是无关紧要的每个项目都是唯一的,所以修复重复的资源依赖关系应该根据具体情况进行评估。
2.不可修正的规则
- 检查资源以解决可寻址的重复的依赖性(Check Resources to Addressable Duplicate Dependencies)
此规则检测在构建的可寻址数据和驻留在 Resources 文件夹中的资源之间是否有重复的资源或资源依赖项。
问题:这些重复意味着数据将同时包含在应用程序版本和可寻址版本中。
解决:此规则不可修复,因为不存在合适的操作。它纯粹是提供信息,提醒你注意冗余。你必须决定如何进行和采取什么行动,如果有的话。可能的手动修复的一个示例是将有问题的资源移出 Resources 文件夹,并使它们可寻址。
检查场景以解决可寻址的重复依赖项(Check Scene to Addressable Duplicate Dependencies)
此规则检测“编辑器场景列表”和“可寻址列表”中的场景之间共享的任何资源或资源依赖关系。
问题:这些重复意味着数据将同时包含在应用程序版本和可寻址版本中。
解决:纯粹是提供信息,可提醒您注意冗余。你必须决定如何进行和采取什么行动,如果有的话。可能的手动修复方法的一个示例是,从“构建设置”中提取具有重复引用的内置场景,并使其成为可寻址的场景。
- 检查 Sprite Atlas 以解决可寻址的重复依赖项(Check Sprite Atlas to Addressable Duplicate Dependencies)
给定一个可寻址的精灵图集,这个规则将检测图集中的任何精灵是否被标记为可寻址的。
问题:这些重复意味着精灵数据将在可寻址构建的多个区域中重复。
解决:纯粹是提供信息,可提醒您注意冗余。你必须决定如何进行和采取什么行动,如果有的话。可能的手动修复方法的一个示例是,从可寻址对象中删除重复的精灵,并让您的资源引用可寻址精灵图集中的某个精灵,而不是直接引用该精灵。
- 构建包布局(Build Bundle Layout)
此规则将显示如何在可寻址构建中显式标记为可寻址的资源。考虑到这些显式资源,我们还将显示哪些资源被隐式引用,因此将被引入构建。
由本规则收集的数据并不表明任何特定的问题。这纯粹是为了提供信息。
3、扩展分析(Extending Analyze)
除了预包装的内容外,每个独特的项目可能还需要其他分析规则。可寻址资源系统允许您创建自己的自定义规则类。
1.AnalyzeRule对象
创建 AnalyzeRule 类的新子类,并覆盖以下属性:
- CanFix 告诉Analyze该规则是否可修复。
- ruleName 是您将在分析窗口中看到的该规则的显示名称。
您还需要覆盖以下方法,下面将对其进行详细介绍: - List RefreshAnalysis(AddressableAssetSettings settings)
- void FixIssues(AddressableAssetSettings settings)
- void ClearAnalysis()
注意:如果您的规则指定为不可修复的,则不必重写该 FixIssues 方法。
- 刷新分析(RefreshAnalysis)
这是您的分析操作。使用这种方法,可以执行您想要的任何计算,并缓存可能需要修复的所有数据。返回值是一个List列表。收集数据之后,为分析中的每个条目创建一个新的AnalyzeResult,其中包含第一个参数的字符串和第二个参数的MessageType(可以选择将消息类型指定为警告或错误)。返回您创建的对象列表。
如果您需要在中TreeView为特定AnalyzeResult对象创建子元素,则可以使用kDelimiter描述父项和所有子项。包含父项和子项之间的分隔符。
-
解决问题(FixIssues)
这是您的修复操作。如果要对分析步骤采取适当的措施,请在此处执行。 -
清除分析(ClearAnalysis)
这是您的明确操作。您可以使用此功能清除或删除在分析步骤中缓存的所有数据。将在TreeView更新以反映缺乏的数据。
2.自定义规则添加到GUI
自定义规则必须使用AnalyzeWindow.RegisterNewRule()为其在GUI类中注册,以便显示在“分析”窗口中。例如:
class MyRule : AnalyzeRule {}
[InitializeOnLoad]
class RegisterMyRule
{
static RegisterMyRule()
{
AnalyzeWindow.RegisterNewRule<MyRule>();
}
}