如何检测统一游戏在(网络键盘)或(移动触摸)上是否为 运行
How to detect if unity game is running on (web keyboard) or (mobile touch)
基本上,我在移动设备上有一个支持物理键盘和触摸屏的统一游戏。我已经完成了物理键盘的移动脚本,现在,我正在为触摸屏编写代码。
如何实现该检测功能?
我在想类似的事情...
private void HandleInput()
{
if (detect if physical keyboard here...)
{
if (Input.GetKey(KeyCode.RightArrow))
{
_normalizedHorizontalSpeed = 1;
}
else if (Input.GetKey(KeyCode.LeftArrow))
{
_normalizedHorizontalSpeed = -1;
}
} else if (detect touch screen here...)
{
for (int i = 0; i < Input.touchCount; ++i)
{
if (Input.GetTouch(i).phase == TouchPhase.Began)
{
some code here...
}
}
}
}
欣赏
您正在寻找 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");
但是,您最好完全取消此检查,因为它是多余的!如果您按向右或向左箭头,则您已经知道用户正在使用键盘。
@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,此方法会使编辑器中的调试变得更加困难。
基本上,我在移动设备上有一个支持物理键盘和触摸屏的统一游戏。我已经完成了物理键盘的移动脚本,现在,我正在为触摸屏编写代码。
如何实现该检测功能?
我在想类似的事情...
private void HandleInput()
{
if (detect if physical keyboard here...)
{
if (Input.GetKey(KeyCode.RightArrow))
{
_normalizedHorizontalSpeed = 1;
}
else if (Input.GetKey(KeyCode.LeftArrow))
{
_normalizedHorizontalSpeed = -1;
}
} else if (detect touch screen here...)
{
for (int i = 0; i < Input.touchCount; ++i)
{
if (Input.GetTouch(i).phase == TouchPhase.Began)
{
some code here...
}
}
}
}
欣赏
您正在寻找 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");
但是,您最好完全取消此检查,因为它是多余的!如果您按向右或向左箭头,则您已经知道用户正在使用键盘。
@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,此方法会使编辑器中的调试变得更加困难。