Я использую Unity версии 2023.2.9f1
< h2>Объяснение сценария
У меня есть статический метод, который выполняется при перезагрузке домена Unity благодаря [InitializeOnLoadMethod]. Он создаст файл в папке StreamingAssets. Пока все хорошо: когда я открываю Unity, я вижу, что журналы печатаются, и в папке StreamingAssets создается файл. То же самое, если я отредактирую скрипт, это приведет к перезагрузке домена и созданию нового файла.
Проблема
У меня была довольно серьезная проблема. трудно каждый раз найти способ воспроизвести проблему, но следующий шаг, похоже, работает:
- Создать новую сцену
< li>Осмотрите сцену в окнах инспектора.
Я думаю, что это связано с AssetImportWorker, потому что, просматривая AssetImportWorkerX.log, сначала я вижу 2 журнала (AssetImportWorker0.log, AssetImportWorker1). .log), и они содержат сообщение журнала двух новых созданных файлов.
Код и журналы
Код: Выделить всё
public static class TEST
{
[InitializeOnLoadMethod]
private static void Init()
{
Debug.Log($"{DateTime.Now.Ticks} : INIT Start");
AssemblyReloadEvents.afterAssemblyReload += AssemblyReloadEvents_afterAssemblyReload;
SyncWriteFile();
Debug.Log($"{DateTime.Now.Ticks} : INIT End");
}
private static void AssemblyReloadEvents_afterAssemblyReload()
{
Debug.Log($"{DateTime.Now.Ticks} : Assembly Reload");
}
private static void SyncWriteFile()
{
string path = Path.Combine(Application.streamingAssetsPath, $"test_{DateTime.Now.Ticks}");
Debug.Log($"{DateTime.Now.Ticks} : Creating file {path}");
File.Create(path);
}
}

Подробнее здесь: https://stackoverflow.com/questions/791 ... background
Мобильная версия