C# 使指令应用于整个数组?
因此,我目前正在修复一个我拥有的枪支系统,我遇到的一个问题是,除了一件武器外,我没有使用任何武器的能力 我想在我继续之前,这里是代码:C# 使指令应用于整个数组?,c#,arrays,unity3d,C#,Arrays,Unity3d,因此,我目前正在修复一个我拥有的枪支系统,我遇到的一个问题是,除了一件武器外,我没有使用任何武器的能力 我想在我继续之前,这里是代码: [Player Controller Script] public Gun gun; void Update() { ControlMouse(); if (Input.GetButtonDown("Shoot")) { gun.Shoot(); } else if (Input.GetButt
[Player Controller Script]
public Gun gun;
void Update() {
ControlMouse();
if (Input.GetButtonDown("Shoot"))
{
gun.Shoot();
}
else if (Input.GetButton("Shoot"))
{
if (gun.gunType == Gun.GunType.Explosive)
{
gun.ShootExplosive();
}
else if (gun.gunType == Gun.GunType.Auto)
{
gun.ShootContinuous();
}
}
现在这很好,但如果我装备第二把枪,它不会开火,因为“枪”不会离开已经设置好的预制件。我尝试通过执行“public Gun,gun1”来添加到“public Gun”数组中,然后将“gun1.Shoot()”与原始“Gun”一样添加到每个if语句中。但这仍然不起作用。我想知道我需要做什么,要么a)“公共枪支”依赖于目前装备的任何带有特定标签的武器,要么b)让阵列正常工作,就像我之前说过的那样
p、 s:所有的枪都可以独立工作(当它们的预置被添加到编辑器中的播放器中时)。你的意思是:
[Player Controller Script]
public Gun gun;
void Update()
{
ControlMouse();
if (Input.GetButtonDown("Shoot"))
{
if (gun.gunType == Gun.GunType.Explosive)
{
gun.ShootExplosive();
}
else if (gun.gunType == Gun.GunType.Auto)
{
gun.ShootContinuous();
}
else
{
gun.Shoot();
}
}
}
第一个if是唯一一个执行过的if,这意味着所有枪都将始终使用
shoot()
方法进行射击。可能需要指定gun变量以指向新武器:
gun = gun2.GetComponent<GunScript>();
gun=gun2.GetComponent();
有趣的是,由于某种原因,固定版本会导致您试图解决xD的问题,我的不正确版本将起作用。此版本只会导致一次射击,因为它只会在按钮DOWN上执行。我正确地假设Gun
类是您使用以下字段创建的:gunType
ennumerable toExplosive
和Auto
?同时,您正在删除当前的枪预制件,并将其替换为一个新生成的枪预制件,其中包含您想要的所有属性?是的,假设正确。是的,我是,但其中一个问题是,当我拿起武器时,我找不到一种方法来使用代码(必须通过编辑器完成),因为只有占用该插槽的预制件才能实际工作。我对unity不是最熟悉,但你能在gun类中表示该预制件,即通过引用传递它吗?