在Unity3D上使用鼠标/触摸键控制平移、缩放和单击

在Unity3D上使用鼠标/触摸键控制平移、缩放和单击,unity3d,input,delegates,pan,Unity3d,Input,Delegates,Pan,我正在开发一款基于2D回合的游戏,我可以处理鼠标和触摸。 游戏有一个六边形地图,需要平移、缩放和单击操作。 我决定应用委托模式,这样每个需要操作的对象都会将事件发送给其委托人,委托人将执行或不执行这些操作。 通过这种方式,所有输入都汇聚到一个TurnManager,该TurnManager通过一个状态机,根据当前游戏状态处理事件。 例如: MapCell.OnMouseUpAsButton()调用 delegate.OnCellClick(MapCell) 一切都很好,这样我就可以在做某事时处理

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

游戏有一个六边形地图,需要平移、缩放和单击操作。

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

例如:
MapCell.OnMouseUpAsButton()
调用
delegate.OnCellClick(MapCell)


一切都很好,这样我就可以在做某事时处理

当我开始在地图中实现缩放和平移时,问题就出现了。 对于这两个操作,我必须避免使用经典的单行为方法(OnMouseDown、OnMouseUpAsButton等)并使用LateUpdate。

所以,
我创建了一个CameraHandler,在最新更新中使用:

  • 手推车
  • HandleTouch()

并且,使用委托模式,引发以下操作:

  • OnMapWillPan()
  • Onmapan()
  • OnMapEnd()

为了避免在UI元素上平移或单击,TurnManager使用
EventSystem.current.IsPointerOverGameObject()过滤收到的事件

问题
在Mac/鼠标上,一切都很好D
在智能手机/触摸屏上,我不能点击任何东西,只有Pan在工作。由于缺少断点或控制台,设备上的调试是地狱般的。

问题

  • 你处理过这些事情吗?怎么做
  • 你用了哪种方法
  • 你认为我做错了什么
  • 是否有最佳实践来避免此类问题并正确处理跨平台输入
  • 关于这个论点有什么好的讲座/书吗?


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

也许你应该发布当前的平移、缩放并单击代码。很多人都愿意看一看,然后告诉你出了什么问题。有很多代码,我必须总结一下。我将编辑问题,稍后添加它