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
Unity3D c# Komunikacja między klasami
- Rejestracja: dni
- Ostatnio: dni
- Postów: 1
0
- Rejestracja: dni
- Ostatnio: dni
- Postów: 6968
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.Healthbę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.