Looking at the Stars.(简称叫我853!

使用 Task 等待 AssetDatabase.ImportPackage 执行

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

来自网友的0条留言