簡體   English   中英

Unity3D中的觸摸輸入

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM