Unity c#代码在一个脚本中工作,但在另一个脚本中不工作?

Unity c#代码在一个脚本中工作,但在另一个脚本中不工作?,c#,unity3d,3d,C#,Unity3d,3d,嘿,伙计们,我有一个非常奇怪的问题,所以基本上发生的是玩家跑进盒子(OnTriggerEnter函数),一个武器会显示在角色上,盒子会繁殖到另一个位置。除了我试图制作一个单独的脚本,因为它所使用的脚本是用于生成框的。我不想让它出现在同一个脚本中,因为没有那么整洁 这是我的脚本代码,它不起作用: public class ChangeGun : MonoBehaviour { public Sprite gunSprite; private string[] weapons =

嘿,伙计们,我有一个非常奇怪的问题,所以基本上发生的是玩家跑进盒子(OnTriggerEnter函数),一个武器会显示在角色上,盒子会繁殖到另一个位置。除了我试图制作一个单独的脚本,因为它所使用的脚本是用于生成框的。我不想让它出现在同一个脚本中,因为没有那么整洁

这是我的脚本代码,它不起作用:

public class ChangeGun : MonoBehaviour {

    public Sprite gunSprite;

    private string[] weapons = { "Pistol", "Shotgun", "Ak47", "Bazooka" };

    public GameObject currentGun;

    public void AddGunToPlayer()
    {
        //int randomNumber = Random.Range(0, 4);
        currentGun.GetComponent<SpriteRenderer>().sprite = gunSprite;

    }

}

ChangeGun为空,因为您没有设置它。您说您在inspector中设置了它,但在您的问题中,您在代码中创建了,因此它将具有默认值

ChangeGun cg = new ChangeGun(); // cg.currentGun is null
cg.AddGunToPlayer(); // Trying to access cg.currentGun
我想您已经在inspector中设置了,因此您需要获取在inspector中创建的组件,而不是创建新的ChangeGun:

ChangeGun cg = GetComponent<ChangeGun>();
cg.AddGunToPlayer();
ChangeGun cg=GetComponent();
cg.AddGunToPlayer();

我认为
currentGun
为空,因为它未在inspector中设置。但是你最好粘贴堆栈的第一行轨迹你能改进你的问题吗?可能重复你的意思改进lol?非常完美,我尽可能地添加了几乎所有的细节。我把它分配给了检查员。嗯,这很有趣,我会检查一下。
ChangeGun cg = new ChangeGun(); // cg.currentGun is null
cg.AddGunToPlayer(); // Trying to access cg.currentGun
ChangeGun cg = GetComponent<ChangeGun>();
cg.AddGunToPlayer();