Я получил крошечный скрипт, который создает текстовый файл в папке 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()
, или я снова делаю что-то явно глупое? Кто-нибудь может предложить обходной путь?
EDIT:
Пожалуйста, игнорируйте первые две ошибки, просто Unity не любит меня, когда я исключаю файлы из сборки постфиксом ~
.