发布于 ,修改:
public static async Task ImportPackageAsync(string packagePath)
{
TaskCompletionSource<object> taskCompletionSource = new TaskCompletionSource<object>();
try
{
AssetDatabase.importPackageCancelled += OnImportPackageCancelled;
AssetDatabase.importPackageCompleted += OnImportPackageCompleted;
AssetDatabase.importPackageFailed += OnImportPackageFailed;
AssetDatabase.ImportPackage(packagePath, false);
await taskCompletionSource.Task;
}
catch (System.Exception exception)
{
Debug.LogException(exception);
}
finally
{
AssetDatabase.importPackageCancelled -= OnImportPackageCancelled;
AssetDatabase.importPackageCompleted -= OnImportPackageCompleted;
AssetDatabase.importPackageFailed -= OnImportPackageFailed;
}
void OnImportPackageCancelled(string packageName)
{
taskCompletionSource.SetCanceled();
}
void OnImportPackageCompleted(string packageName)
{
taskCompletionSource.SetResult(null);
}
void OnImportPackageFailed(string packageName, string errorMessage)
{
taskCompletionSource.SetException(new System.Exception(errorMessage));
}
}
代码参考至 Github:YLahin/TequilaLegacy/YL.Wrench.Unity.Editor/UnityPackageImporter.cs