You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity Editor中[InitializeOnLoadMethod]后台多次执行异常问题

Unity Editor脚本异常问题:[InitializeOnLoadMethod]被AssetImportWorker重复执行

使用Unity版本

2023.2.9f1

脚本说明

我编写了被[InitializeOnLoadMethod]标记的静态方法,会在Unity域重载时执行,用于在StreamingAssets文件夹创建文件。正常打开Unity或编辑脚本触发域重载时,控制台打印日志并生成一个文件,符合预期。

问题描述

执行以下步骤会稳定复现问题:

  • 创建新场景
  • 在检视窗口查看该场景

执行后,Unity控制台无新日志,但SyncWriteFile()方法被执行两次,生成两个新文件。我确认未在主线程触发显式域重载,该问题在主项目中造成严重影响。

经排查,问题与AssetImportWorker相关,在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 SyncWriteFile()
    {
        string path = Path.Combine(Application.streamingAssetsPath, $"test_{DateTime.Now.Ticks}");
        Debug.Log($"{DateTime.Now.Ticks} : Creating file {path}");
        File.Create(path);
    }

    private static void AssemblyReloadEvents_afterAssemblyReload()
    {
        Debug.Log($"{DateTime.Now.Ticks} : Assembly Reload");
    }
}

复现步骤演示

复现步骤演示


内容的提问来源于stack exchange,提问作者Eledwin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 07:07:35