У меня проблема с экспортом проекта 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
Я изменил методы прикосновения ***, включая эту строку:
[self.superview touchesBegan:touches withEvent:event];
так что для вызова touchesBegan
тоже superview
, но тогда WebView
не получит никакого события касания.
Я ожидаю, что и UnityView
, и WebView
получите каждый правильный UITouchEvents
.Я знаю, что единство не создает никаких представлений, оно просто отображает графику для своего представления, поэтому весь вид получает события касания, а затем транслирует их как прикосновения к кнопке.Может ли это быть проблемой Raycaster от Unity?Может ли raycaster изменить поведение так, чтобы прикосновения к фону проходили к фоновому виду (используя представленную выше иерархию второго вида).
В настоящее время я использую Unity V2019.1