importedAssets | 导入资产的路径数组。 |
deletedAssets | 已删除资产的路径数组。 |
movedAssets | 已移动资产的路径数组。 |
movedFromAssetPaths | 已移动资产的原始路径数组。 |
didDomainReload | 布尔值,如果已重新加载域,则设置为 true。 |
在完成任意数量的资产导入后调用此方法(当“资产”进度条到达末尾时)。
此调用可能在手动重新导入后发生,或者当您将资产或资产文件夹移动到“项目”窗口中的新位置时发生。每个字符串数组项都包含相对于“项目”根目录下的“Assets”文件夹的文件路径。 importedAssets
包含操作中使用的所有资产的路径。 movedAssets
和 movedFromAssetPaths
的每个连续索引都引用相同的资产。
如果您对多个单个资产执行批量操作,而不是包含这些资产的文件夹,则此函数将针对每个资产调用一次,并将每个单个资产作为各个数组中的唯一项目。
当资产数据库完成导入资产时,会调用 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"); } } }