【发布时间】:2019-03-20 13:13:46
【问题描述】:
我正在尝试制作一个脚本,让玩家在通电时获得更强的攻击力。它对我所做的健康增加效果很好,但我似乎无法确定我在这方面做错了什么。在过去的几天里,我一直在这样做,但我没有得到任何地方。给出错误的行已被注释,但很难看到。这是倒数第二行代码:
power.damagePerShot = power.damagePerShot + DamageBoost;
我认为我掌握了错误的性质,但我不明白为什么我会收到它。如果 power.damagePerShot 取自 PlayerShooting 然后它被引用到正确的脚本,我不明白空引用来自哪里。
The conponent is referenced...
The script being referenced is attached to the object...
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);
}
}
【问题讨论】:
-
请稍候@sujith karivelli 这个重复引用的方式被过度引用了,在这种情况下根本没有回答这个问题......仅仅因为OP提到了
NullReferenceException并不意味着他没有'不知道它是什么..他想知道在他的情况下它来自哪里以及如何解决它! -
@derHugo 我不会说它被过度引用,但在这种情况下它不是正确的副本。我已经投票决定在此基础上重新开放(并基于您提供的答案)。
-
@John 谢谢。我过度引用的意思是,我看到很多 Unity 特定问题在某处提到
NullReferenceExceptionBering 被标记为重复,尽管在许多情况下这并不能帮助他们以任何方式解决他们的问题。我只是想公平对待新用户并真正解决他们的问题。如果有一个更好的问题有一个足够的答案,至少指向正确的方向,而不是一个有效的重复,那就去吧:) -
@John:如果他理解什么是 null 引用意味着他必须知道 Unity 为什么返回 null 的答案,不是吗?
-
@sujithkarivelil 不,没有必要.. 他知道,显然他的参考在尝试访问它时具有价值
null,但 why 并没有由此解释(参见他的评论我的回答)
标签: c# unity3d nullreferenceexception