【问题标题】:Unity how handle onTouch event?Unity如何处理onTouch事件?
【发布时间】:2019-10-17 09:39:18
【问题描述】:

我添加 UI 对象 Button 并添加具有公共功能的 C# 脚本。 要按钮,我添加组件事件触发器,执行事件(指针单击和指针向下)并重定向到我的函数 public void onClick()

在 PC 上代码有效,但是当我将游戏上传到 android 并触摸对象时,代码无效。

onTouch事件怎么做?

【问题讨论】:

    标签: android unity3d events onclick ontouch


    【解决方案1】:

    触摸不是点击

    为了处理触摸输入,您需要检查Input.touchCount,然后使用Input.GetTouch 查询每个触摸。请注意,每个Touch 都有一个an ID,每个手指都是唯一的,并且跨帧保持一致。

    没有简单的OnClick 之类的触摸方法,因为触摸可能要复杂得多(点击、长按、拖动等),因此您必须检查Update() 内部并处理来自触摸的转换数据到鼠标模拟自己。

    【讨论】:

    • 如何使用 Touch 检测用户点击、移动的 GameObject 或 UI 元素?
    • @Cognizer Physics.Raycast 用于游戏对象。画布 UI 元素已设置为处理触摸。
    【解决方案2】:

    我认为 OnMouseDown 会检查每一帧是否有鼠标输入,它就像更新一样,因此您必须在更新中进行脸颊触摸,并且通过触摸您将拥有更多控制,如触摸阶段,以检测触摸是否开始、抬起或移动等。 .. 你需要检查

     if(input.touchCount > 0)
    
    void Update() {
         if (Input.touchCount > 0){
             print("exist a touch");
    
                 if(Input.GetTouch(0).phase == TouchPhase.Began){
                     print("Touch begans");
                 }
                 if(Input.GetTouch(0).phase == TouchPhase.Ended){
                     print("Touch Ended");
                 }
          }
        }
    
    chCount > 0)& inside this you can cheek for touch Phase
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-23
      • 1970-01-01
      • 1970-01-01
      • 2023-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多