Должен ли я беспокоиться о вызове Repaint (); многократно? - PullRequest
1 голос
/ 21 мая 2019

Сейчас я занимаюсь разработкой собственного расширения EditorWindow в Unity.

Я переопределил функцию Update(), и когда выполняются определенные условия, я вызываю метод Repaint(); для соответствующего обновления пользовательского интерфейса.

public class MyAwesomePlugin : EditorWindow
{
    ...

    public void Update()
    {
        if (condition_1())
        {
            ...
            Repaint();
        }

        if (condition_2())
        {
            ...
            Repaint();
        }
    }
}

Мой вопрос заключается в том, вызовет ли множественные вызовы Repaint(); в одном и том же периоде выполнения несколько повторных перерисовок, или Unity достаточно умен, чтобы объединить их и перерисовать только один раз.

1 Ответ

1 голос
/ 21 мая 2019

Было бы лучше создать и установить переменную флага bool isDirty = false.

public void Update()
{
    bool isDirty = false;

    if (condition_1())
    {
        ...
        isDirty = true;
    }

    if (condition_2())
    {
        ...
        isDirty = true;
    }

    if (isDirty) Repaint();
}

Это обходит вопрос, но любые ненужные вызовы функций отрицательно влияют на производительность.

Если в Update есть return операторы, после того как isDirty можно установить на True, поставьте if (isDirty) Repaint(); перед return.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...