Witam czy mógłby mi ktoś wytłumaczyć jak w skrypcie powiedzmy B mogć odnieść się do zmiennej np. Health która jest w skrypcie A?
znalazłem w internecie ze do zmiennych w skryptach które są w standard assets mogę się łatwo odwoływać wpisując
public UnityStandardAssets.Characters.FirstPerson.FirstPersonController Fpsc;
ale jak odwołać się do zmiennej w skrypcie który sam sobie napisałem i jest on w folderze _Skrypty który jest w głównym katalogo tu już nie mogłem znaleźć.
Prosił bym o pomoc / wytłumaczenie jak sie to robi
0
0
W Twoim przykładzie odwołujesz się do klasy, a nie zmiennej -> deklarujesz zmienną Fpsc typu FirstPersonController.
Żebyś mógł odnieść się do zmiennej w klasie, musisz znaleźć instancję tego skryptu (obiekt, do którego przypięty jest ten skrypt).
W Unity jest multum możliwych rozwiązań tego problemu:
- Możesz bezpośrednio z poziomu skryptu B szukać skryptu A -> zapisy typu
GetComponentInParent<A>().Health
,GetComponentInChildren<A>().Health
, - Możesz zrobić dodatkowy skrypt C, który będzie Unity'owym singletonem (z publiczną statyczną instancją inicjowaną w metodzie
Awake()
oraz publicznymi polami typu A oraz B, do których w edytorze lub po instancjonowaniu prefabów podepniesz obiekty z tymi skryptami), wtedy ze skryptu B doA.Health
będziesz się odwoływaćC.instanceA.Health
. - Możesz obiektowi ze skryptem A przypisać tag i w skrypcie B wyszukiwać obiektu z tym tagiem i na znalezionym obiekcie wywołać metodę
GetComponent<A>().Health
. -> https://docs.unity3d.com/ScriptReference/GameObject.FindWithTag.html
Rozwiązanie jakiego użyjesz zależy od rodzaju gry, którą tworzysz. Jeśli chcesz się dobrać do życia postaci trafionej przez pocisk, to lepiej w metodzie obsługującej kolizję pocisku zrobić GetComponentInParent<A>().Health
na colliderze w który uderzyliśmy.