2014-09-01 51 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

相关问题