Я создаю приложение, которое использует устройства камеры. Мне нужно реализовать функцию, которая проверяет, разрешил ли пользователь приложению доступ к камерам устройств, если они этого не сделали, сцена, использующая камеру, просто показывает черный экран.Доступ к переменной доступа Unity3D через Xcode
Поскольку Unity поддерживает только Application.HasUserAuthorization на платформе webplayer, мне нужно добавить проверку авторизации в проект через XCode после сборки.
Во-первых, я добавил следующий код didFinishLaunchingWithOptions в UnityAppController.mm файла:
// Determine camera access on iOS >= 7
if ([AVCaptureDevice respondsToSelector:@selector(requestAccessForMediaType:completionHandler:)]) {
// Completion handler will be dispatched on a separate thread
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {
if (YES == granted) {
// User granted access to the camera, continue with app launch
CameraIsAvailable = YES;
CameraCheckDone = YES;
}
else {
CameraIsAvailable = NO;
CameraCheckDone = YES;
}
}];
}
else {
// iOS < 7 (camera access always OK)
CameraCheckDone = YES;
// Continue with app launch...
}
и follwoing кода в к applicationDidBecomeActive
while (!CameraCheckDone) { }
if(!CameraIsAvailable){
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Authorize Camera"
message:@"Instructions go here"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
[alertView release];
}
Результатом является то, что каждый когда приложение запускается, появляется всплывающее окно с инструкцией пользователю активировать камеру, whi ch - прогресс, но у них все еще есть доступ к сцене, которая показывает черный экран вместо просмотра камеры.
Есть ли способ получить доступ к переменной CameraIsAvilable изнутри Unity?
Любые предложения были бы высоко оценены! ТИА!
Awesome. Это то, что мне нужно! – jsherk
Рад, что это вам помогло! :) –