为什么canvas仍在重建并重新分配其数据?

时间:2019-04-26 08:34:01

标签: unity3d unity-ui

我想避免在显示/隐藏UI元素时发生重建/重新批处理过程,因此我遵循HERE的建议: 解决方法是将要显示/隐藏的UI放置在自己的Canvas ...并...启用/禁用此对象上的Canvas组件。

通过将5000张图像放置在单独的空Canvas下并使用此脚本仅在该画布父游戏对象上启用/禁用画布组件进行测试:

public class CanvasScript : MonoBehaviour
{
    public Canvas canvas;
    private Image[] images = new Image[5000];

    public void CreateImages()
    {
       for (int i = 0; i < 5000; i++)
       {
           GameObject NewObj = new GameObject(); //GameObject
           images[i] = NewObj.AddComponent<Image>(); //Image Script                       
           NewObj.GetComponent<RectTransform>().SetParent(canvas.transform); //set child
        }
    }

    public void EnableDisableSubCanvas()
    {
        canvas.enabled = !canvas.enabled;
    }
}

问题 :调用EnableDisableSubCanvas()仍会在UGUI.Rendering.UpdateBatches调用上产生大峰值(〜100ms)。为什么会发生这种情况,或者我做错了什么?

0 个答案:

没有答案