Ссылка на объект не установлена ​​для экземпляра объекта. - На какой объект не ссылаются? - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь сделать сценарий, который дает игроку более сильную атаку при переходе при включении питания.Это работало хорошо с увеличением здоровья, которое я сделал, но я не могу определить, что я делаю неправильно с этим.Я занимался этим последние несколько дней и никуда не денусь.Строка с сообщением об ошибке закомментирована, но ее может быть довольно сложно увидеть.Это вторая после последней строки кода:

power.damagePerShot = power.damagePerShot + DamageBoost;

Я думаю, что я понимаю природу ошибки, но я не понимаю, почему я ее получаю.Если power.damagePerShot взято из PlayerShooting, а затем ссылка на правильный сценарий, я не понимаю, откуда берется нулевая ссылка.

Ссылка на компонент ...

Сценарий, на который ссылаются, прикреплен к объекту ...

using UnityEngine;


public class ShootPowerUp : MonoBehaviour
{
    public GameObject pickupEffect;
    public PlayerShooting playerShooting;
    public int DamageBoost = 100;

    private void Update()
    {
        transform.Rotate(new Vector3(15, 30, 45) * Time.deltaTime);
    }

    void OnTriggerEnter(Collider other)
    {

        if (other.CompareTag("Player"))
        {
            ShootPowerPickup(other);
        }
    }

    void ShootPowerPickup(Collider player)
    {
        Instantiate(pickupEffect, transform.position, transform.rotation);

        PlayerShooting power = player.GetComponent<PlayerShooting>();
        power.damagePerShot = power.damagePerShot + DamageBoost; //This line is giving the error.
        Destroy(gameObject);
    }
}

1 Ответ

0 голосов
/ 16 октября 2018

Компонент PlayerShooting не присоединен к Player GameObject, но один из его дочерних

Вместо этого используйте GetComponentInChildren как

PlayerShooting power = player.GetComponentInChildren<PlayerShooting>();

, и вы должныбыть в порядке.

...