Menu
CoddyTech

SerializeField

Część sekcji Podstawy skryptów w Unity ścieżki Unity w Coddy. Lekcja 8 z 67.

Pole public pełni jednocześnie dwie funkcje: jest widoczne w Inspectorze, a każdy inny skrypt może je odczytać i zmienić. Często potrzebujesz tylko tej pierwszej. Pole private (domyślne w C#) może zmieniać tylko jego własna klasa, więc żaden inny skrypt nie może go zepsuć, ale Unity nie pokazuje go w Inspectorze.

[SerializeField] prosi Unity, aby mimo to zapisało i pokazało prywatne pole. Zasięg tej wieżyczki ustawia się dla każdej wieżyczki osobno w Inspectorze i żaden inny skrypt nie może go zmienić:

[SerializeField] private float range = 5f;

void Start()
{
    Debug.Log("Range: " + range);
}

Większość kodu Unity przechowuje ustawienia właśnie w ten sposób: jako prywatne, z użyciem [SerializeField]. Uważaj na odwrotną sytuację: ustaw pole jako prywatne i zapomnij o atrybucie, a Unity po cichu odrzuci wartość zapisaną w scenie. Pole przyjmie wartość liczbową z kodu i nie pojawi się żaden komunikat o błędzie.

challenge icon

Wyzwanie

Łatwy

Wysokość lampy jest publiczna, więc każdy skrypt może ją przesunąć. Ustaw height jako prywatną, ale pozostaw ją w Inspectorze, który ustawia ją na 4. Lampa nadal musi wisieć na wysokości ustawionej w Inspectorze.

Naciśnij Play i sprawdź wysokość lampy, a następnie naciśnij Check.

Spróbuj swoich sił

using UnityEngine;

public class LampHeight : MonoBehaviour
{
    public float height = 1f;

    void Start()
    {
        transform.position = new Vector3(0, height, 0);
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy skryptów w Unity