2016-10-07 54 views
0

我想獲得一個介於0和3之間的數字。我試圖遍歷一個計數器和每5次點擊一個按鈕,它調用一個方法,但我似乎無法弄清楚。我嘗試過不同的方式來做到這一點。如果我能得到一些關於如何完成這一點的提示,請讓我知道。如果你需要任何其他信息,那麼也讓我知道。謝謝!C#統一轉換迭代數量爲基於點擊次數的範圍數

using UnityEngine; 
using UnityEngine.UI; 
using System; 
using System.Threading; 

public class ButtonClick : MonoBehaviour { 

    private Vector3 starPos; 
    private int starCounter; 
    private int[] starTypes; 
    private int totalStarTypes = 4; 

    public Button button; 
    public UnityEngine.UI.Text starCounterText; 

    private Image starImage; 

    // Use this for initialization 
    void Start() { 
     starTypes = new int[totalStarTypes]; 
    } 

    void Update(){ 
     if (Input.GetMouseButtonDown (0)) { 
      starCounter++; 
     } 

     for (int i = 0; i < starCounter; i++) { 
      int j = i; 
      int type = (j % 5); 
      if (type == 0) { 
       //SpawnStar (j%5); 
      } 
     } 
    } 

    // Update is called once per frame 
    public void UpdateStar() { 
     starCounterText.text = "Star Counter: " + starCounter; 
    } 

    public void SpawnStar(int type){ 
     if (type == 0) { 
      Debug.Log ("White Star Spawned!"); 
     } 
     if (type == 1) { 
      Debug.Log ("Red Star Spawned!"); 
     } 
     if (type == 2) { 
      Debug.Log ("Yellow Star Spawned!"); 
     } 
     if (type == 3) { 
      Debug.Log ("Blue Star Spawned!"); 
     } 
    } 
} 
+0

什麼決定哪個明星產卵?它是否也是迭代的?隨機?其他一些決定性因素? – Abion47

+0

對於每次點擊一個計數器加1(已處理),每5次點擊它產生一個明星。所以無論什麼樣的整數處理第5個點擊邏輯(如j或type,或許還沒有完成),它會調用函數來產生一個類型(int)的星。一旦我完成了基礎知識,我也會隨機添加它。現在只需要在處理邏輯的計數器上進行迭代,就可以確定哪種類型的星形生成。也許我應該像List一樣使用,遍歷列表並獲得一個隨機int嗎? –

+0

你不需要列表,數組或循環。這可以用簡單的數學來完成。記住KISS原則。 – Abion47

回答

-1

你的代碼將在第5次點擊後每幀產生全部星星。

試試這個,點擊時它會產生一顆星,並且只會產生一個你想要產卵的星。

  • 的int starCounter將處理產卵哪個明星
  • 的布爾executeSpawn將處理時產卵星

using UnityEngine; 
using UnityEngine.UI; 
using System; 
using System.Threading; 

public class ButtonClick : MonoBehaviour { 

    private Vector3 starPos; 
    private int starCounter; 
    private bool executeSpawn; 
    private int[] starTypes; 
    private int totalStarTypes = 4; 

    public Button button; 
    public UnityEngine.UI.Text starCounterText; 

    private Image starImage; 

    // Use this for initialization 
    void Start() { 
     starTypes = new int[totalStarTypes]; 
    } 

    void Update(){ 
     if (Input.GetMouseButtonDown (0)) { 
      starCounter++; 
      executeSpawn = true; 
     } 

     if(executeSpawn) { 
      SpawnStar (i % 5); 
      executeSpawn = false; 
     } 
    } 

    // Update is called once per frame 
    public void UpdateStar() { 
     starCounterText.text = "Star Counter: " + starCounter; 
    } 

    public void SpawnStar(int type){ 
     if (type == 0) { 
      Debug.Log ("White Star Spawned!"); 
     } 
     if (type == 1) { 
      Debug.Log ("Red Star Spawned!"); 
     } 
     if (type == 2) { 
      Debug.Log ("Yellow Star Spawned!"); 
     } 
     if (type == 3) { 
      Debug.Log ("Blue Star Spawned!"); 
     } 
    } 
} 
+0

這段代碼每次點擊都會產生一顆星星。 – Abion47

+0

正確的,看着'SpawnStar'函數做什麼,看起來這是需要的。我將編輯答案以反映這 –

+0

首先,OP明確指出每五次點擊一次就會出現一顆星星。其次,這段代碼可以通過一個參數4調用'SpawnStar',它不會做任何事情。第三,如果目標*在每次點擊時產生星號,則布爾標誌是多餘的。 – Abion47

1
Random r = new Random(); 

void Update() 
{ 
    if (Input.GetMouseButtonDown(0)) 
    { 
     starCounter = (starCounter + 1) % 5; 
     if (starCounter == 0) SpawnStar(r.Next(0, 4)); 
    } 
} 
+0

非常感謝! –