我将Unity
项目导出到iOS时遇到问题。
我要做的是使Unity游戏视图位于另一个WebView
上,并在需要时将触摸事件传递给WebView
而不是Unity游戏视图。目前,我的UnityView
仅包含一个按钮,但是它是全屏的,因为稍后会添加其他元素。 UnityView
的背景是透明的。 WebView
包含许多可点击的项(按钮等)。
我尝试了以下视图层次结构: -UIView |-WebView |-UnityView
并分别尝试了每个更改:
1)在UnityView+iOS.mm
文件中,我添加了:
-(id)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
id hitView = [super hitTest:point withEvent:event];
if (hitView == self) {
return nil;
} else {
return hitView;
}
}
2)也在UnityView+iOS.mm
文件中添加了此覆盖:
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
NSLog(@"Passing all touches to the next view (if any), in the view stack.");
return NO;
}
第一次尝试和第二次尝试使UnityView
没有响应,第二次尝试使WebView
没有响应。
我还将层次结构更改为以下一个匹配项: -UIView | -WebView | | -UnityView
并尝试应用此更改:
UnityView+iOS.mm
文件中,我更改了touches ***方法,包括以下行:[self.superview touchesBegan:touches withEvent:event];
以便也调用touchesBegan
到superview
,但是WebView
没有收到任何触摸事件。
我期望UnityView
和WebView
都收到正确的UITouchEvents
。我知道统一不会创建任何视图,它只是将图形渲染到其视图,因此整个视图都将接收触摸事件,然后将它们转换为对按钮的触摸。
这可能是Unity的Raycaster问题吗? raycaster可以改变行为,以便背景上的触摸传递到背景视图(使用我上面介绍的第二个视图层次结构)。
我目前正在使用Unity V2019.1