Получение компонента обьекта юнити 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

→ Ссылка