Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使指令应用于整个数组?_C#_Arrays_Unity3d - Fatal编程技术网

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 to
Explosive
Auto
?同时,您正在删除当前的枪预制件,并将其替换为一个新生成的枪预制件,其中包含您想要的所有属性?是的,假设正确。是的,我是,但其中一个问题是,当我拿起武器时,我找不到一种方法来使用代码(必须通过编辑器完成),因为只有占用该插槽的预制件才能实际工作。我对unity不是最熟悉,但你能在gun类中表示该预制件,即通过引用传递它吗?