Получение компонента обьекта юнити 3Д
Есть скрипт Shooting, который висит на обьекте player, а есть скрипт BulletForceBooster, который должен обратиться к скрипту Shooting и изменить некоторые переменные без ручного внесения в инспекторе, но обьект player оно кое-как находит, а вот сам скрипт получить не может, выдаёт ошибку Null Reference. Код:
public class BulletForceBooster : MonoBehaviour
{
public GameObject player;
private float BoosterGiveForce;
public Shooting force;
private void Awake()
{
player = GameObject.Find("player");
}
public void Start()
{
BoosterGiveForce = Random.Range(1, 4);
Shooting force = player.GetComponent<Shooting>();
}
public void OnTriggerEnter2D(Collider2D collision)
{
if (collision.tag == "Player")
{
Pickup();
Destroy(gameObject);
}
}
void Pickup()
{
Debug.Log(force);
force.bulletForce += BoosterGiveForce;
}
}
Ответы (1 шт):
Автор решения: zhenyaxxo
→ Ссылка
Shooting force = player.GetComponent<Shooting>();
Тут ты создаешь новый объект класса Shooting с названием, таким же как и твое поле, сделай вот так и все заработает:
force = player.GetComponent<Shooting>();
А так же, у тебя Player публичное поле, перенеси игрока туда ручками через инспектор и убери поиск в Awake