2015-11-09 52 views
0

所以我現在正在修理我的槍支系統,而我遇到的問題是缺乏使用任何武器的能力。Make指令適用於整個數組?

我想之前我繼續在這裏是代碼:

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

    } 

現在這工作正常,但如果我裝備了第二槍,它不會火,因爲「槍」是不是從已經改變遠設置預製。我試着用'公槍槍'來增加'公槍槍'的陣列,然後在每一條語句中加入'gun1.Shoot()',就像原來的'槍'一樣。但是,這仍然沒有奏效。我想知道我需要做什麼,要麼a)「公共槍支槍」依賴於具有特定標籤的任何武器,或者b)讓該陣列能夠正常工作,這是我之前說過的。

p.s:所有的槍都能獨立工作(當他們的預製件被添加到編輯器中的玩家時)。

+1

我是正確的假設'Gun'類是一個你與字段創建:'gunType' ennumerable爲'爆炸「和」自動「?並且你正在刪除當前的槍械預製件,並將其替換爲一個新產品,並與你想要的所有特性一起使用? – Cjen1

+0

是的,是正確的假設。而且是的,但其中一個問題是,當我拿起武器(它必須通過編輯器完成)時,我無法找到用代碼實現這一點的方法,因爲只有使用該插槽的預製工具纔會實際上工作。 – Sl0thzy

+0

我不是最熟悉的團結,但你能代表槍類I.e預製。通過引用傳遞它? – Cjen1

回答

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

首先,如果是,是有史以來執行這將意味着所有槍支將始終與Shoot()方法拍攝的唯一的一個。

+0

有趣的是,擁有固定版本會導致您嘗試解決xD問題。出於某種原因,我的版本不正確。 – Sl0thzy

+0

這個版本只有一次拍攝,因爲它只會在按鈕上執行 – Cjen1

0

也許你需要分配槍變量指向的新武器:

gun = gun2.GetComponent<GunScript>();