Unity如何处理onTouch事件?

时间:2019-05-31 18:30:18

标签: android unity3d events onclick ontouch

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

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

如何执行onTouch事件?

2 个答案:

答案 0 :(得分:0)

触摸不是点击

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

没有简单的OnClick之类的触摸方法,因为触摸可能会更加复杂(点击,长按,拖动等),因此您必须在Update()内部进行检查并进行处理自己将触摸数据转换为鼠标类似物。

答案 1 :(得分:0)

我认为OnMouseDown会检查每帧是否有鼠标输入,就像是更新一样,因此您必须在Update中按下触摸并通过触摸来控制触摸相位,从而可以检测触摸是否开始,抬起或移动等。 .. 您需要检查

import { Component, OnInit } from '@angular/core';
import { FormControl, FormGroup } from '@angular/forms';
import { AuthenticationService } from 'src/app/services/authentication.service';

@Component({
  selector: 'app-login',
  templateUrl: './login.component.html',
  styleUrls: ['./login.component.css']
})
export class LoginComponent implements OnInit {

  constructor(private authenticationService: AuthenticationService) { }

  loginForm = new FormGroup({
    email: new FormControl(''),
    password: new FormControl(''),
  });

  ngOnInit() {
  }

  // Called when login form submits
  onSubmit() {
    this.login();
  }

  login() : void {
    this.authenticationService
      .login(this.loginForm.controls.email.value, this.loginForm.controls.password.value)
      .subscribe(   // <-- Subscription required here 
        (res) => {
          console.log(res);
      });
  }

}