我正在尝试访问unity3d项目中的玻璃滑动垫,但它不起作用。 “KeyCode.Escape”适用于向下滑动。但是如何向左滑动并点击工作?
我在OnGUI中使用以下内容检查了“secondaryTouchEnabled”并返回“False”,
GUI.Label (new Rect (300, 100, 200, 60), ""+AndroidInput.secondaryTouchEnabled.ToString());
它不应该返回“真实”吗?
如果有人可以在这里分享示例代码,那就太棒了。
答案 0 :(得分:2)
您问题中的GUI.Label应该与我在下面设置的两个调试字段相同。下面的代码将数据插入到文本字段中。
void Update () {
#if UNITY_ANDROID
if (Input.GetKey(KeyCode.Escape))
Application.Quit(); // HANDLE ESCAPE
// FINGERS
debug1.text = "TOUCHES: " + AndroidInput.touchCountSecondary.ToString(); // FINGER TOUCHES
// TOUCH COORDS
string resp = "COORDS: \n";
for (int i = AndroidInput.touchCountSecondary - 1; i > -1; i--) {
resp += "(id: " + i;
resp += " x: " + AndroidInput.GetSecondaryTouch(i).position.x;
resp += " y: " + AndroidInput.GetSecondaryTouch(i).position.y;
resp += ") \n";
}
debug2.text = resp;
#endif
}
如果你想做更高级的GDK方法,你需要注册一个AndroidJavaClass并扩展UnityPlayerNativeActivity。完成后,您可以在Android中注册GestureDetector,并使用UnityPlayer.UnitySendMessage()将结果传回Unity。这也适用于语音转录和其他GDK结果。
答案 1 :(得分:0)
我已经尝试过这样做"如果你想做更高级的GDK方法,你需要注册一个AndroidJavaClass并扩展UnityPlayerNativeActivity。完成后,您可以在Android中注册GestureDetector,并使用UnityPlayer.UnitySendMessage()将结果传回Unity。这也适用于语音转录和其他GDK结果。",使用jainam here提出的代码
但我的UnityPlayerNativeActivity无法将信息发送给Unity,我不知道为什么。
我的快速解决方案是下一个(待优化):
touches = int.Parse(AndroidInput.touchCountSecondary.ToString());
if (touches > 0) {
Debug.Log("TOUCHE");
xCurrent = AndroidInput.GetSecondaryTouch(0).position.x;
yCurrent = AndroidInput.GetSecondaryTouch(0).position.y;
if(xInitial == -1 && yInitial == -1){
xInitial = xCurrent;
yInitial = yCurrent;
}
}else if(xInitial > -1 && yInitial > -1){
if(yCurrent < yInitial && yCurrent == 0){
Debug.Log("Swap down");
Application.Quit();
}else if(xCurrent - xInitial < -100){
Debug.Log("Swap Right");
}else if(xCurrent - xInitial > 100){
Debug.Log("Swap Left");
}else{
Debug.Log("Tap");
}
xInitial = yInitial = xCurrent = yCurrent = -1;
}
您对此解决方案有何看法?
确实存在UnityPlayerNativeActivity的任何解决方案吗?