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

在Unity的Application.logMessageReceived回调中调用Debug.Log是否会引发递归?

你的判断完全正确,这段Unity代码会引发无限递归

先看你提供的代码:

using UnityEngine;

void Awake()
{
    Application.logMessageReceived += callback;
}

void Start()
{
    Debug.Log("Start");
}

void callback(string condition, string stackTrace, LogType type)
{
    Debug.Log("Hello world");
}

原因很直接:

  • Application.logMessageReceived事件的触发逻辑是任何通过Unity日志系统输出的内容(包括Debug.Log)都会触发这个事件
  • 当Start方法里的Debug.Log("Start")执行时,会触发callback
  • 而callback内部又调用了Debug.Log("Hello world"),这会再次触发logMessageReceived事件,进而再次执行callback
  • 这个循环会无限重复,直到调用栈溢出,最终导致程序崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 11:07:01