发布网友 发布时间:2024-10-23 22:16
共1个回答
热心网友 时间:2024-10-23 23:06
Analyze是一个工具,用于收集项目地址布局信息。在某些情况下,它会采取清理项目状态的措施;在其他情况下,它仅作为信息工具,帮助用户对Addressable布局做出更明智的决策。
在编辑器中,可以通过以下方式打开Addressables Analyze窗口:Window > Asset Management > Addressables > Analyze,或者通过Addressables Groups窗口,点击Tools > Analyze按钮。
Analyze窗口显示了分析规则列表,以及以下操作:
1.1 分析操作:这是规则的信息收集步骤。在规则或规则集上运行此操作将收集有关生成、依赖映射等方面的数据。每个规则负责收集所需的数据,并将其报告为AnalyzeResult对象的列表。
在分析步骤期间,不要修改任何数据或项目状态。根据收集到的数据,可能需要修复操作。有些规则只包含分析步骤,因为不能根据收集到的信息采取合理、合适和正常的行动。例如,Check Scene to Addressable Duplicate Dependencies和Check Resources to Addressable Duplicate Dependencies就是这类规则的例子。
纯信息性且不包含修复操作的规则被归类为Unfixable Rules,而有固定操作的规则被归类为Fixable Rules。
1.2 清除步骤:此操作将删除分析收集的所有数据,并相应地更新TreeView。
1.3 修复操作:对于Fixable Rules,可以选择运行修复操作。这会使用在分析步骤中收集到的数据来执行任何必要的修改并解决问题。
2 已提供的分析规则:
2.1 可修复rules
2.1.1 检查重复的Bundle依赖项:此规则通过扫描所有使用BundledAssetGroupSchemas的组并投影asset组布局来检查可能冗余的asset。这实际上会触发一个完整的构建,所以这个检查是非常耗时和耗费性能的。
问题:冗余的asset是由于不同组中的asset共享依赖关系,例如,两个Prefabs共享存在于不同Addressable Group中的一个material。这些material(及其任何依赖)都会被分成两个组,每组都有Prefabs。为了防止这种情况发生,必须将material标记为Addressable,或者放在其中一个Prefabs中,或者放在它自己的空间中,从而将该material及其依赖项归在一个单独的Addressable Group中。
解决方案:如果此检查发现任何问题,则根据此规则运行FIX操作将创建一个新的Addressable group,并移动所有依赖的assets。
2.2 不可修复rules
2.2.1 检查Resources到Addressable重复依赖项:此规则检测在构建的Addressable数据和驻留在Resources文件夹中的assets之间是否存在任何assets或assets依赖项冗余。
问题:这些冗余意味着数据将同时包含在应用程序构建和Addressable构建中。
解决方案:这条规则是不可修复的,因为不存在适当的操作。这是纯粹的信息,提醒你注意冗余。如果分析出了的话,你必须手动解决。一个可能的手动修复的例子是将违规assets移出Resources文件夹,并使其变为Addressable。
2.2.2 检查场景到Addressable重复依赖项:此规则检测编辑器场景列表中的场景和Addressable中的场景之间共享的任何assets或assets依赖项。
问题:这些冗余意味着数据将同时包含在应用程序构建和Addressable构建中。
解决方案:这纯粹是信息,提醒您注意冗余。如果分析出了的话,你必须手动解决。一个可能的手动修复的例子是将具有重复引用的内置场景从BuildSettings中提取出来,并使其成为一个Addressable场景。
2.2.3 检查Sprite Atlas到Addressable重复依赖项:给定Addressable sprite atlas,此规则将检测atlas中是否有任何sprites在其他任何地方被标记为Addressable。
问题:这些冗余意味着sprite数据将在Addressable构建的多个区域中重复。
解决方案:这纯粹是信息,提醒你注意冗余。如果分析出了的话,你必须手动解决。一个可能的手动修复的例子是从Addressable中删除重复的sprite,并让你的assets引用可寻址的sprite atlas中的sprite,而不是直接引用sprite。
2.2.4 构建包布局:此规则将显示如何在Addressable构建中显式标记为Addressable的assets。对于这些显式assets,我们还将给出哪些assets被构建隐式引用了,并且最终会被拉进构建中。
根据这一规则收集的数据并不表明任何特定问题。这纯粹是信息。
3 Analyze扩展
每个独特的项目可能需要额外的分析规则,而不仅仅是预先打包好的规则。Addressable Assets System允许你创建自己的自定义规则类。
3.1 AnalyzeRule对象
创建一个AnalyzeRule类的子类,重写以下属性:
你还需要重写以下方法,具体如下:
3.1.1 RefreshAnalysis:这是你的分析操作。在此方法中,执行任何您想要的计算,并缓存可能的修复所需的任何数据。返回值是List list。收集数据后,为分析中的每个条目创建一个新的AnalyzeResult,将数据作为第一个参数的字符串,将MessageType作为第二个参数(可选的,将消息类型指定为警告或错误)。返回所创建对象的列表。
如果需要为特定的AnalyzeResult对象在TreeView中创建子元素,则可以用kDelimiter来描述父项和任何子元素。包括父项和子项之间的分隔符。
3.1.2 FixIssues:这是你的修复操作。如果为了响应分析步骤需要采取适当的操作,请在这里执行它。
3.1.3 ClearAnalysis:这是您的清理操作。在分析步骤中缓存的任何数据都可以在此函数中清除或删除。TreeView会同时更新以展示缺乏必要数据。
3.2 将自定义规则添加到GUI上
为了在分析窗口中显示,自定义规则必须使用AnalyzeWindow.RegisterNewRule(),向GUI类注册。例如: