如何检测统一游戏是否正在运行(网络键盘)或(移动触摸)

时间:2017-07-07 01:12:21

标签: mobile unity5 unity3d-2dtools

基本上,我有一个由移动设备中的物理键盘和触摸屏支持的统一游戏。我已经完成了物理键盘的移动脚本,现在,我正在为触摸屏编码。

如何实现该检测功能?

我在想那样的东西......

QTextEdit * pwTextEdit = whatever your source;
QTextDocument * poDocument = pwTextEdit->document();

QTextBlock oTextBlock = poDocument->begin();
while (oTextBlock.isValid())
{
    QTextBlock::iterator oTextBlockIterator(oTextBlock.begin());
    while (TRUE)
    {
        if (oTextBlockIterator.atEnd())
        {
            // Append your '\n' here
            break;
        }
        QTextFragment oTextFragment = oTextBlockIterator.fragment();
        QString sText = oTextFragment.text();
        // Process the text from sText
        oTextBlockIterator++;
    }
    oTextBlock = oTextBlock.next();
}

欣赏

2 个答案:

答案 0 :(得分:1)

@ryemoss提供的解决方案很棒,但检查将在运行时进行评估。如果你想避免每帧检查,我建议你使用Platform dependent compilation。由于预处理程序指令,只有所需的代码将根据目标平台

编译到您的应用程序中
#if UNITY_IOS || UNITY_ANDROID || UNITY_WP_8_1
   for (int i = 0; i < Input.touchCount; ++i)
   {
      if (Input.GetTouch(i).phase == TouchPhase.Began)
      {
         some code here...
      }
   }
#else
   if  (Input.GetKey(KeyCode.RightArrow))
    {
        _normalizedHorizontalSpeed = 1;
    } 
    else if (Input.GetKey(KeyCode.LeftArrow))
    {
        _normalizedHorizontalSpeed = -1;
    }
#endif

但是,请注意,如果使用Unity Remote,则此方法在编辑器中难以调试。

答案 1 :(得分:0)

您正在寻找Application.platform。 以下内容应该可以实现您的目标,或者阅读here以获取更多设备。

if (Application.platform == RuntimePlatform.WindowsPlayer)
    Debug.Log("Do something special here");
else if (Application.platform == RuntimePlatform.Android || Application.platform == RuntimePlatform.IPhonePlayer)
    Debug.Log("Do something else here");

然而,你可能最好一起摆脱这个检查,因为它是多余的!如果您按右箭头或左箭头,则表示用户正在使用键盘。