Почему холст все еще восстанавливает и обновляет свои данные? - PullRequest
1 голос
/ 26 апреля 2019

Я хочу, чтобы процесс перестроения / повторной сборки не происходил при отображении / скрытии элементов пользовательского интерфейса, поэтому я следовал совету ЗДЕСЬ : Обходной путь - разместить пользовательский интерфейс, который будет отображаться / скрытые на собственном Canvas ... и ... включить / отключить компонент Canvas для этого объекта.

Протестировано с размещением 5000 изображений в отдельном пустом Canvas и включением / отключением только компонента Canvas в этом родительском игровом объекте 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 () по-прежнему генерирует большие пики (~ 100 мс) при вызовах UGUI.Rendering.UpdateBatches. Почему это происходит или что я делаю не так?

...