Unity的IPreprocessBuildWithReport.OnPreprocessBuild抛出错误

Nik*_*dze 5 build unity-game-engine unity-editor

我有一个小脚本,它在构建之前在 Resources 文件夹中创建一个文本文件,需要将其包含在构建中。所以我使用 Unity 的IPreprocessBuildWithReport编写了这个脚本:

using UnityEngine;
using UnityEditor;
using UnityEditor.Build;
using System.IO;

class MyCustomBuildProcessor : IPreprocessBuildWithReport
{
    public int callbackOrder { get { return 0; } }
    public void OnPreprocessBuild(UnityEditor.Build.Reporting.BuildReport report)
    {
        File.WriteAllText(
            Application.dataPath + "/Resources/version.txt",
            string.Format("{0}", PlayerSettings.Android.bundleVersionCode));

        AssetDatabase.Refresh();
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意AssetDatabase.Refresh();最后的声明。它确保 Unity 意识到更改并将更新的文件包含在构建中。现在,每当我更改bundleVersionCode并按构建时,Unity 都会按预期更新文件,但构建会失败并出现以下非常常见的错误:

在此输入图像描述

但是,如果我尝试以相同的方式第二次构建,bundleVersionCode则不会发生任何文件更改并且构建会成功。

所以我想这AssetDatabase.Refresh()并没有真正起作用OnPreprocessBuild(),或者我又做了一些明显愚蠢的事情?谁能建议一个解决方法?

编辑: 请忽略前两个错误,只是当我通过后缀从构建中排除文件时,Unity 不喜欢我~