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

Unity中OnReveal函数未完全执行仅输出Point A的原因排查

Unity中OnReveal函数第二次执行异常问题及解决

我在Unity项目中编写了如下OnReveal函数:

void OnReveal(RevealCard r)
{
    print("point A");
    if (guideMgr.guideAnimPressOnFirstCardOnOpenPackResult.activeInHierarchy)
    {
        print("point B");
        guideMgr.guideAnimPressOnFirstCardOnOpenPackResult.SetActive(false);
        GuideMgr.SaveFinishedGuide(GuideMgr.keyGuideFinishedPressOnFirstCardOnOpenPackResult);
    }
    if (!GuideMgr.IsGuideFinished(GuideMgr.keyGuideFinishedSwipeLeftOnOpenPackResult))
    {
        print("point C");
        guideMgr.guideAnimSwipeLeftOnOpenPackResult.SetActive(true);
    }

    print("point D");
    unrevealedCount -= 1;
    if (unrevealedCount <= 0)
    {
        doneButton.SetActive(true);
    }
    print("point E");
}

该函数首次执行正常,但第二次仅打印"point A"后就直接退出,后续代码均未执行。调试时运行到Point A后也会跳出函数。

若调整代码顺序为以下形式,或删除两个if块,函数可正常执行到print("point E"):

调整顺序后的代码:

print("point A");
unrevealedCount -= 1;
if (unrevealedCount <= 0)
{
    doneButton.SetActive(true);
}
if (guideMgr.guideAnimPressOnFirstCardOnOpenPackResult.activeInHierarchy)
{
    print("point B");
    guideMgr.guideAnimPressOnFirstCardOnOpenPackResult.SetActive(false);
    GuideMgr.SaveFinishedGuide(GuideMgr.keyGuideFinishedPressOnFirstCardOnOpenPackResult);
}
if (!GuideMgr.IsGuideFinished(GuideMgr.keyGuideFinishedSwipeLeftOnOpenPackResult))
{
    print("point C");
    guideMgr.guideAnimSwipeLeftOnOpenPackResult.SetActive(true);
}
print("point E");

删除if块后的代码:

print("point A");
unrevealedCount -= 1;
if (unrevealedCount <= 0)
{
    doneButton.SetActive(true);
}
print("point E");

问题解决

感谢@Noobogami的建议,问题根源是Unity日志未捕获的异常。
问题截图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 23:47:29