我有一个小脚本,它在构建之前在 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();
}
}
注意最后的AssetDatabase.Refresh();
声明。它确保 Unity 意识到更改并在构建中包含更新的文件。现在,每当我更改bundleVersionCode
并按下构建时,Unity 都会按预期更新文件,但构建失败并出现以下非常一般的错误:
但是,如果我尝试使用相同的方式进行第二次构建,则bundleVersionCode
不会发生文件更改并且构建成功。
所以我猜这AssetDatabase.Refresh()
并没有真正起作用OnPreprocessBuild()
,还是我又在做一些明显愚蠢的事情?任何人都可以提出解决方法吗?
编辑:~
请忽略前两个错误,当我从后缀
构建中排除文件时,Unity 不喜欢我。