版本: Unity 6 (6000.0)
语言英语
  • C#

AssetPostprocessor.OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths, bool didDomainReload)

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户提出的每项更改建议,并在适用时进行更新。

关闭

提交失败

由于某种原因,您的更改建议无法提交。请 <a>重试</a> 几分钟后。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

参数

importedAssets 导入资产的路径数组。
deletedAssets 已删除资产的路径数组。
movedAssets 已移动资产的路径数组。
movedFromAssetPaths 已移动资产的原始路径数组。
didDomainReload 布尔值,如果已重新加载域,则设置为 true。

描述

在完成任意数量的资产导入后调用此方法(当“资产”进度条到达末尾时)。

此调用可能在手动重新导入后发生,或者当您将资产或资产文件夹移动到“项目”窗口中的新位置时发生。每个字符串数组项都包含相对于“项目”根目录下的“Assets”文件夹的文件路径。 importedAssets 包含操作中使用的所有资产的路径。 movedAssetsmovedFromAssetPaths 的每个连续索引都引用相同的资产。

如果您对多个单个资产执行批量操作,而不是包含这些资产的文件夹,则此函数将针对每个资产调用一次,并将每个单个资产作为各个数组中的唯一项目。

当资产数据库完成导入资产时,会调用 OnPostProcessAllAssets。您可以安全地从此回调中执行任何资产数据库操作,例如加载、导入、移动或删除资产。

如果初始化需要加载资产之类的资产操作,则应在域重新加载后使用 OnPostProcessAllAssets 进行初始化。可以检查 didDomainReload 参数,以查看是否已重新加载域。所有域重新加载都将导致调用 OnPostprocessAllAssets。

注意:如果您的代码在此回调期间导致任何新的资产导入,则在这些新的导入完成后,将再次调用 OnPostProcessAllAssets。

请注意,此函数必须声明为 static,即如果将其声明为实例函数,则不会正确调用。

GetPostprocessOrder 指定的顺序不会影响此函数,而是可以使用以下属性定义依赖项来控制顺序

注意:此回调的版本不包含 didDomainReload 参数(OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths)

using UnityEngine;
using UnityEditor;

class MyAllPostprocessor : AssetPostprocessor { static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths, bool didDomainReload) { foreach (string str in importedAssets) { Debug.Log("Reimported Asset: " + str); } foreach (string str in deletedAssets) { Debug.Log("Deleted Asset: " + str); }

for (int i = 0; i < movedAssets.Length; i++) { Debug.Log("Moved Asset: " + movedAssets[i] + " from: " + movedFromAssetPaths[i]); }

if (didDomainReload) { Debug.Log("Domain has been reloaded"); } } }