[英]Touch Input in Unity3D
所以我正在做一個簡單的棋盤游戲。 我的過程是,當我按下一個按鈕時,程序將生成一個1-9的隨機數,而我的角色將根據結果數將位置從其初始位置更改為下一個位置。
我的過程運行正常。 我的角色按應有的方式移動,但是我的觸摸輸入存在一個小問題。 當我按下我的按鈕時,它將生成一個數字,並在GUIText中顯示為“ JUST A MILLISECOND”,然后放開按鈕,它將再次變回0。 我認為我的問題是,僅當按住按鈕時,結果編號才出現在GUIText中,放開時返回到0。 這不僅是一個問題,另一個問題是,當我按住按鈕的時間更長時,它會繼續生成和接受數字,因此完全弄亂了我的流程。 我的問題是,如何僅單擊一次即可阻止按鈕處理,單擊后如何在GUIText中顯示結果編號。 我已經嘗試過if語句將其更改為不同的Touch Phase屬性,但仍然無法正確完成。 這是我的代碼:
using UnityEngine;
using System.Collections;
public class dice_roll : MonoBehaviour {
public Texture2D roll_btn;
public Texture2D roll_btn2;
public static int num = 0;
public static string num_str = "";
public GUIText move_number;
public static int character_position = 0;
public static float y_axis = 1.18f;
public GameObject character;
public GameObject i;
public GameObject ii;
public GameObject iii;
public GameObject iv;
public GameObject v;
public GameObject vi;
public GameObject vii;
public GameObject viii;
public GameObject ix;
// Use this for initialization
void Start ()
{
guiTexture.texture = roll_btn;
}
// Update is called once per frame
void Update ()
{
move_number.text = "0";
foreach (Touch touch in Input.touches)
{
if (guiTexture.HitTest(touch.position))
{
num = Random.Range(1,10);
guiTexture.texture = roll_btn2;
num_str = num.ToString();
move_number.text = num_str;
character_position = character_position + num;
switch (character_position)
{
case 1 :
//character.transform.position = i.transform.position;
character.transform.position = new Vector3 (i.transform.position.x, y_axis, i.transform.position.z);
break;
case 2 :
character.transform.position = ii.transform.position;
character.transform.position = new Vector3 (ii.transform.position.x, y_axis, ii.transform.position.z);
break;
case 3 :
//character.transform.position = iii.transform.position;
character.transform.position = new Vector3 (iii.transform.position.x, y_axis, iii.transform.position.z);
break;
case 4 :
//character.transform.position = iv.transform.position;
character.transform.position = new Vector3 (iv.transform.position.x, y_axis, iv.transform.position.z);
break;
case 5 :
//character.transform.position = v.transform.position;
character.transform.position = new Vector3 (v.transform.position.x, y_axis, v.transform.position.z);
break;
case 6 :
//character.transform.position = vi.transform.position;
character.transform.position = new Vector3 (vi.transform.position.x, y_axis, vi.transform.position.z);
break;
case 7 :
//character.transform.position = vii.transform.position;
character.transform.position = new Vector3 (vii.transform.position.x, y_axis, vii.transform.position.z);
break;
case 8 :
//character.transform.position = vii.transform.position;
character.transform.position = new Vector3 (viii.transform.position.x, y_axis, viii.transform.position.z);
break;
case 9 :
//character.transform.position = vii.transform.position;
character.transform.position = new Vector3 (ix.transform.position.x, y_axis, ix.transform.position.z);
break;
}
}
}
}
}
我的GUITexture roll_btn
是我按下的按鈕。 因此,我所指的問題是,在按住按鈕的同時,我的整數character_position
會繼續從生成的數字中添加值。 我想防止這種情況。
在此先感謝您。 :D
每幀調用一次Update()
方法,並且在此將每幀的值設置為零
void Update () { move_number.text = "0"; }
所以刪除它應該可以正常工作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.