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
相关产品推荐
相关产品推荐

