问题:
动态替换UGUI RawImage材质(这里使用RenderTexture)时,画面不刷新/重叠
原因:
Raw Image同一帧画面未实现刷新,所以会导致切换前后的多个画面重叠在一起。如下图所示:
解决办法:
使用协程,在替换材质前延迟一帧即可,给RawImage刷新的时间.
以下为源码
//替换材质的协程
IEnumerator ChangeImage(RenderTexture renderTexture)
{
if (centerViewRaw)
{
Debug.Log("替换");
centerViewRaw.texture = null;
yield return waitForEndOfFrame;
centerViewRaw.texture = renderTexture;
}
yield break;//这里在替换完成后自动关闭协程
}
注意这里WaitForEndOfFrame最好以变量形式出现.
// 调用协程
void StartChange(RenderTexture renderTexture)
{
StartCoroutine(ChangeImage(renderTexture));
}
如果有类似的问题,希望多留言交流.