【问题标题】:How to change int in another script?如何在另一个脚本中更改 int?
【发布时间】:2020-09-05 20:25:47
【问题描述】:

我必须在敌人脚本中编写一个代码,当他们与子弹碰撞时会受到伤害。现在我想改变这个int,(它定义了子弹的伤害)但是怎么做呢?我遇到了错误。

敌人脚本:

public int bulletdamage;

public void dead()
{
    Destroy(gameObject);
}

public void OnCollisionEnter(Collision collision)
{
    if (collision.collider.CompareTag("bullet"))
    {
        Debug.Log("loluhit");
        healthenemy -= bulletdamage;
        if (healthenemy <= 0f)
        {
            dead();
        }
    }
}

附着在敌人身上,敌人被实例化并获得随机数的活

然后是拍摄脚本,我想在其中更改 int 值,让它整洁:

public int bulletdmg;

void Start()
{
    GetComponent<health>().bulletdamage = bulletdmg;
}

我得到错误:

“NullReferenceException:对象引用未设置为对象的实例”

怎么办?

【问题讨论】:

  • 这能回答你的问题吗? Unity C# Null Reference Exception
  • @Lotan 这意味着所有敌人都会失去生命值,不是吗?
  • 不要将“已解决”编辑到您的问题中。而是接受一个答案。如有必要,请创建一个您可以接受的答案。

标签: c# unity3d integer


【解决方案1】:

如果您在 GetComponentInParent 行收到此错误,那是因为父级没有 healt 脚本。

确保对象父级已附加此脚本。

确保health 输入正确(类以大写字母开头)。

【讨论】:

  • 但敌人不是孩子也不是父母
  • 那你为什么要使用GetComponentInParent?您应该拥有对所需脚本/对象的引用,并获取该组件。
  • 这是我偶然使用的测试
  • 我如何获得参考/如何创建它
  • 让我向你推荐这一系列由 Unity 人制作的视频教程,将教你一些基本的东西:youtube.com/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-31
  • 1970-01-01
相关资源
最近更新 更多