使指令适用于整个阵列?

时间:2015-11-09 22:53:14

标签: c# arrays unity3d

所以我现在正在修理一个我拥有的枪支系统,而我遇到的一个问题是缺乏使用任何武器的能力而只有一个。

我想在我继续这里之前是代码:

[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();
        }

    }

现在这种方法很好但是如果我装备了第二把枪,它就不会起火,就像枪一样#34;并没有改变已经设置的预制件。我试着添加一系列公共枪支枪#39;通过做公枪枪,枪1',然后添加' gun1.Shoot()'对于每个if语句与原始'枪一样。但那仍然行不通。我想知道我需要做什么,要么有a)公共枪炮'依赖于当前配备某种标签的武器或者b)我说过我之前尝试过的阵列是否正常工作。

p.s:所有枪支都可以独立工作(当他们的预制件在编辑器中添加到播放器中时)。

2 个答案:

答案 0 :(得分:0)

你的意思是:

[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是唯一一个执行的,这意味着所有的枪总是用Shoot()方法射击。

答案 1 :(得分:0)

也许你需要指定枪支变量来指向新武器:

gun = gun2.GetComponent<GunScript>();