Witam
Od pewnego czasu uczę się unity.
Podczas robienia gry napotkałem pewien problem.
Chciałem dodać do gry możliwość customizacji bohatera w postaci nakrycia głowy.
W jednym skrypcie napisałem metody ,które aktywują się po naciśnięciu przycisku w menu customizacji.
Ustawiają one zmienną zapisującą numer nakrycia na dany numer.
Potrzebuję zrobić skrypt który sprawdza , jaką ta zmienna ma aktualnie wartość i ustawia dane nakrycie zgodnie z wartością zmiennej.
Niestety nie wiem jak użyć tej zmiennej w innym skrypcie.
Proszę o pomoc
Czy ta zmienna jest globalna? Albo czy jest zdefiniowana w klasie Bohater tak, żeby inne metody miały do niej dostęp?
Zmienna jest publiczna.
I zmiennej tej chcę użyć w innej klasie i innym pliku.
Nie wiem jak to jest w C# a na nim operuje Unity, ale w C++ i C wystarczy, że w innych plikach zadeklarujesz: extern typ_zmiennej nazwa_zmiennej; np. extern char mySign;
I wtedy możesz go użyć.
Możesz oznaczyć swoją zmienną klasy jako public static
i wtedy dostajesz się po niej po NazwaSkryptu.NazwaPola
. Na przykład:
public class NazwaSkryptu : MonoBehaviour
{
public static int NazwaPola;
}
Dziękuję za odpowiedź.
Alternatywnie też (i chyba to trochę bardziej "poprawne") jest zrobić coś takiego, że jeśli twój skrypt przypisany jest np. do obiektu Player, to w innym skrypcie bierzesz sobie tego playera (np. ustawiasz w inspectorze) i robisz coś w stylu:
customScript = player.GetComponent<MojSkryptDoCzegos>().PublicznePoleSkryptuMojego;