Должен ли я обнулять поля при уничтожении GameObjects? - PullRequest
0 голосов
/ 28 июня 2018

Если поле установлено через Инспектор, должен ли я обнулять его при уничтожении GameObject или Unity делает это автоматически?

public class TestClass : MonoBehaviour
{
    public Image Icon;
    public Button CloseButton;

    private void Start()
    {
        Icon.color = Color.black;
        CloseButton.onClick.AddListener( MyButtonListener );
    }

    private void OnDestroy()
    {
        CloseButton.onClick.RemoveListener( MyButtonListener );

        //DO I NEED THIS?
        Icon = null;
        CloseButton = null;
    }

    private void MyButtonListener() { }
}

1 Ответ

0 голосов
/ 28 июня 2018

Если поле установлено через Инспектор, должен ли я обнулять его при уничтожении GameObject или Unity делает это автоматически?

Нет, вам не нужно устанавливать Unity Object на null до или после его уничтожения. Объект Unity имеет перегрузку оператора ==. Когда Объект уничтожен, Unity помечает объект как null, но Объект на самом деле не null. Этот механизм реализован так, что вы проверяете, является ли он null с if(unityObject == null). Когда он помечен как нулевой, нет смысла снова устанавливать его в ноль.

Обратите внимание, что когда вы сказали "уничтожить", я предполагаю, что вы уничтожаете объект с помощью функции Destroy или DestroyImmediate. Кроме того, если вы просто отменили подписку на событие, как вы сделали в своем вопросе, вам не нужно уничтожать объект. Вам также не нужно устанавливать его на null.

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