我正在使用 Unity 开发一款游戏,但最近我遇到了这个无法解释的错误,当我尝试编辑 GO 子组件时弹出该错误..
item.transform.GetChild(0).GetComponent<SVGImage>().sprite = script.GetFlipperPreviewSpriteById(myFlippers[i].Id);
item.transform.GetChild(1).GetComponent<Text>().text = myFlippers[i].Id+" flipper";
我收到这个错误信息..
2022.05.03 21:52:48.749 22693 27192 Error Unity Trying to add IMG_imageItem (Unity.VectorGraphics.SVGImage) for graphic rebuild while we are already inside a graphic rebuild loop. This is not supported.
我在我的项目中实施 Firebase 后开始出现此错误,我无法继续前进。我找不到任何文章谈论这个所以我希望我至少能得到一些答案:)提前致谢!
Unity版本2019.4.36f1
经过 5 页的谷歌和一点点运气,我发现这篇文章正是在谈论我的问题,基本上你只能在主线程上更新 UI,所以当你使用诸如 firebase 之类的异步函数时,你需要制作编辑你的函数在主线程上运行的 UI
在我的理解中,Unity在处理图形重建时(在Update()和StartCoroutine之后),你是不允许修改UI元素的(比如调用
SetActive()
)。
所以你应该过一段时间再做这些操作。你可以使用
StartCoroutine
,它保证在图形重建之前的下一帧运行你的代码。但是你必须在 yield 关键字之后编写代码(因为 yield 关键字之前的代码将在这一帧立即运行,与图形重建)。