使用Unity3D上的Mouse / Touch处理平移,缩放和单击

时间:2018-05-21 10:04:29

标签: unity3d input delegates pan

我正在开发一款基于2D回合的游戏,我处于可以处理鼠标和触摸的状态。

游戏有六角形地图,需要平移,缩放和点击动作。

我决定应用委托模式,因此每个需要操作的对象都会将事件发送给其代理人,他们会做什么或不做什么。 通过这种方式,所有输入都汇聚到一个TurnManager,通过状态机,根据当前游戏状态处理事件。

实施例: MapCell.OnMouseUpAsButton()来电 delegate.OnCellClick(MapCell)

一切运作良好,通过这种方式我可以处理 某事。<
<>

当我开始在地图中实现缩放 Pan 时,问题就出现了。 对于这两个动作,我必须避免使用经典 Monobehaviour 方法( OnMouseDown OnMouseUpAsButton ,...)并使用 LateUpdate 点。

所以,
我在 LateUpdate 中创建了一个 CameraHandler

  • HandleMouse()
  • HandleTouch()

并使用委托模式唤起以下操作:

  • OnMapWillPan()
  • OnMapPan()
  • OnMapEnd()

为避免对UI元素进行平移或点击, TurnManager 会使用EventSystem.current.IsPointerOverGameObject()过滤收到的事件

问题
在Mac /鼠标上一切都很棒! :d
在智能手机/触控上,我无法点击任何内容,只有潘正在工作。设备上的调试是恶意的,因为缺少断点或控制台。

问题

  • 你有没有处理这件事?怎么样?
  • 您使用了哪种方法?
  • 你觉得我做错了什么?
  • 是否有最佳做法可以避免这样的问题并正确处理跨平台输入?
  • 这个论点是否有任何好的讲座/书?

PS:如果需要,我可以显示代码

0 个答案:

没有答案