【问题标题】:Touch Input in Unity3DUnity3D 中的触控输入
【发布时间】:2014-09-19 23:54:24
【问题描述】:

所以我正在统一做一个简单的棋盘游戏。我的过程是,当我按下一个按钮时,程序会生成一个 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

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    Update() 方法每帧调用一次,您将值设置为零 这里的每一帧
    void Update () { move_number.text = "0"; }
    所以通过删除它应该可以正常工作

    【讨论】:

      猜你喜欢
      • 2015-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-07
      相关资源
      最近更新 更多