触摸屏幕上的任何位置,除了 GUI 按钮 Android Unity

Posted

技术标签:

【中文标题】触摸屏幕上的任何位置,除了 GUI 按钮 Android Unity【英文标题】:Touch anywhere on screen EXCEPT GUI button Android Unity 【发布时间】:2014-09-27 10:37:40 【问题描述】:

我正在开发一个安卓游戏,我有一个正交相机,我可以通过触摸左右移动,上下移动,我创建了一个 gui 按钮。当我触摸可以移动相机的任何地方时,我将 apk 导出到设备,但是当我触摸我创建的 gui 按钮时,相机也会移动。我希望当我单击按钮时相机停止移动,当我触摸屏幕的任何位置时相机会移动。或者当我触摸屏幕并双击按钮时是否有可能移动相机。我创建了一个布尔值 [ButtonPressed] 但是当我也点击 GUI 按钮时,相机移动不起作用这是我的代码:

Touch touch;
public Vector2 startPos;
Vector2 endPos;
public bool fingerHold = false;
public bool ButtonPressed = false;


void Update()

if(!ButtonPressed)

  if (Input.touchCount > 0)
    
       touch = Input.GetTouch(0);
       if (touch.phase == TouchPhase.Began)
       
          startPos = touch.position;
          fingerHold = true;
       
       else if (touch.phase == TouchPhase.Moved)
       
          endPos = touch.position;
       
       else if (touch.phase == TouchPhase.Ended)
       
          fingerHold = false;
        
    
        if (fingerHold)
        

            float deltaX = endPos.x - startPos.x;
            float deltaY = endPos.y - startPos.y;
            bool horizontal = false;

            if (Mathf.Abs(deltaX) > Mathf.Abs(deltaY))
                horizontal = true;

            if (horizontal)
            
                if (deltaX < 0 )
                    transform.Translate(Vector3.left * Time.deltaTime * 20);
                else if (deltaX > 0)
                    transform.Translate(Vector3.right * Time.deltaTime * 20);
            
            else
            
                if (deltaY < 0)
                    transform.Translate(Vector3.down * Time.deltaTime * 20);
                else if (deltaY > 0)
                    transform.Translate(Vector3.up * Time.deltaTime * 20);
            
        
      
    
void OnGUI()

if (GUI.Button(new Rect(10, 10, 158, 54), "Click Button"))
        
           ButtonPressed = true; 
           Print("Button Clicked");
        

感谢您的帮助。

【问题讨论】:

【参考方案1】:

您可以检查您的触摸是否在按钮范围内,

if (touch.phase == TouchPhase.Began)

   startPos = touch.position;

   // if we touch inside the buttons bounds get out of here!
   if(startPos.x < 168 && startPos.y < 64) return;

   fingerHold = true;

【讨论】:

以上是关于触摸屏幕上的任何位置,除了 GUI 按钮 Android Unity的主要内容,如果未能解决你的问题,请参考以下文章

IOS/Objective-C:检测 UIVIew 上的滑动和屏幕相同位置的按钮触摸

未检测到 SKSpriteNode 触摸

从触摸位置到右上角的动画图像图标?

如何按住浮动按钮并将其移动到 android 屏幕上的任何位置?

我在可可触摸应用程序中的按钮没有正确返回我的位置

Flutter GestureDetector 在按钮上不起作用