У меня есть панель интерфейса с элементом Text в качестве дочернего элемента; к нему прикреплен скрипт PlayerHUB, который будет обрабатывать обновление. У меня есть GameObject
с именем Player, к которому прикреплен скрипт под названием «BaseStats», и к нему есть строковая переменная с именем Name, установленной на «Red», и, наконец, у меня есть скрипт «BattleManager», прикрепленный к пустому игровому объекту под названием Battle Manager.
Все, что я хочу сделать, это с помощью кода (без полей publi c), чтобы скрипт «BattleManager» изменил текст, который является дочерним, на панель пользовательского интерфейса на имя персонажа игрока «Красный» ", но это не работает, я не могу понять, почему.
Проблема указывает мне здесь:
void Start()
{
playerHUB.SetUP(baseStats);
}
Вот мой скрипт BaseStats, прикрепленный к проигрывателю:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BaseStats : MonoBehaviour
{
public string Name = "Red";
}
Вот скрипт PlayerHUB:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class PlayerHUB : MonoBehaviour
{
Text nameText;
public void SetUP(BaseStats baseStats)
{
nameText = GameObject.Find("PlayerHUB").GetComponentInChildren<Text>();
nameText.text = baseStats.Name;
}
}
И, наконец, скрипт BattleManger:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BattleManager : MonoBehaviour
{
PlayerHUB playerHUB;
BaseStats baseStats;
// Start is called before the first frame update
void Start()
{
playerHUB = GetComponent<PlayerHUB>();
baseStats = GetComponent<BaseStats>();
playerHUB.SetUP();
}
}