Unity's IPreprocessBuildWithReport.OnPreprocessBuild выдает ошибку - PullRequest
0 голосов
/ 11 мая 2018

Я получил крошечный скрипт, который создает текстовый файл в папке 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 обновляет файл, как и ожидалось, но сборка завершается с этой довольно общей ошибкой:

enter image description here

Однако, если я попытаюсь собрать во второй раз с тем же bundleVersionCode, то никаких изменений файла не произойдет, и сборка будет успешной.

Итак, я думаю, что AssetDatabase.Refresh() на самом деле не работает в OnPreprocessBuild(), или я снова делаю что-то явно глупое? Кто-нибудь может предложить обходной путь?

EDIT: Пожалуйста, игнорируйте первые две ошибки, просто Unity не любит меня, когда я исключаю файлы из сборки постфиксом ~.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...