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