2014-09-01 54 views
-1

我是Unity新手,正在開發板球比賽。我有一個顯示小隊選擇的屏幕。它顯示了15個玩家的圖像,其中我必須選擇任何11個。爲什麼Update()不止一次地調用它自己?

我一直在列表中添加點擊(選定)玩家。但問題是,當我點擊一次播放器時,我的列表大小有時會變成4或5甚至更多。我的腳本如下:

using UnityEngine; 
using System.Collections; 

public class bear : MonoBehaviour { 

    // Use this for initialization 
    void Start() { 

    } 

    // Update is called once per frame 
    void Update() { 
     //select(); 
     if (Input.touchCount == 1) 
     { 
      Vector3 wp = Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position); 
      Vector2 touchPos = new Vector2(wp.x, wp.y); 
      if (collider2D == Physics2D.OverlapPoint(touchPos)) 
      { 
       Material newMat = Resources.Load("New Material", typeof(Material)) as Material; 
       gameObject.renderer.material = newMat; 
       PlayersManager.objPlayerList.Add(PlayersManager.setPlayerObject("Bear")); 
       countausplayer.countteam++; 
      } 
     } 
    } 
} 

請指導我在哪裏出錯了?爲什麼列表大小會自行增加?

+0

多少幀,你呢? 「更新每幀調用一次,它是幀更新的主要功能。」請參閱http://docs.unity3d.com/Manual/ExecutionOrder.html – 2014-09-01 12:50:16

+0

這與您的問題沒有直接關係,但我會將'Material newMat = Resources.Load(「New Material」,typeof(Material))作爲材料;'出於你的更新,因爲這是一個相當昂貴的操作。 '物質newMat'可以成爲一個記憶,你可以在'Awake'中設置它。也許緩存渲染器變量。 – 2014-09-02 16:37:32

回答

2

更新被稱爲每一幀,並且如果用戶的手指在您的項目上並將項目添加到列表中,則基本上每測試一幀就會測試。如果你長時間接觸,你會得到更多的補充。

相反,您應該測試觸摸已結束,您可以使用TouchPhase執行此操作。

右邊TouchPhaseTouchPhase.Ended

這意味着手指已從屏幕上擡起。這是觸摸的最後階段。

或者在你的代碼:

void Update() { 
    //select(); 
    int i = 0; 
    while (i < Input.touchCount) { 
     if (Input.GetTouch(i).phase == TouchPhase.Ended) 
      Vector3 wp = Camera.main.ScreenToWorldPoint(Input.GetTouch(i).position); 
      Vector2 touchPos = new Vector2(wp.x, wp.y); 
      if (collider2D == Physics2D.OverlapPoint(touchPos)) 
      { 
       Material newMat = Resources.Load("New Material", typeof(Material)) as Material; 
       gameObject.renderer.material = newMat; 
       PlayersManager.objPlayerList.Add(PlayersManager.setPlayerObject("Bear")); 
       countausplayer.countteam++; 
      } 
     } 
    } 
} 
+0

太棒了,這有幫助 – 2014-09-02 10:27:21

相關問題