2017-01-22 6 views
0

샘플 프로젝트 "SpatialAudio"를 Google VR SDK for Unity에서 수정하여 iOS에 구현했습니다. 최신 GVR SDK를 사용하여 Unity에서 빌드 했으므로 CardboardAudioSource 대신 GvrAudioSource 등의 몇 가지 비추천 키워드를 대체해야했습니다. Unity에서 제공하는 것처럼 Xcode에서 빌드하면 정상적으로 실행됩니다. 물리적 장치. 그런 다음 Unity 생성 파일 'main.mm'을 편집하여 기본 App Controller (UnityAppController)를 새 것으로 변경하고 NewAppController라고 부르 자.GVR 오디오 렌더러가 없습니다. iOS

// main.mm 
... 
const char* AppControllerClassName = "UnityAppController"; 
... 
//UIApplicationMain(argc, argv, nil, [NSString stringWithUTF8String:AppControllerClassName]); // old 
UIApplicationMain(argc, argv, nil, [NSString stringWithUTF8String:"NewAppController"]); // new 

NewAppController는 UnityAppController에서 상속과 같이, 메서드 또는 속성 중 하나를 오버라이드 (override)하지 않는 클래스입니다 :

@interface NewAppController : UnityAppController 
@end 

@implementation NewAppController 
@end 
내가 지금 이전과 정확히 동일하게 작동하지만,해야한다고 생각

런타임에 다음과 같은 경고 메시지가 나타납니다. "오디오 효과 GVR 오디오 렌더러를 찾을 수 없습니다. 프로젝트에 올바른 원시 오디오 플러그인 라이브러리가 포함되어 있고 수입업자 설정이 올바르게 설정되어 있는지 확인하십시오."

다른 모든 것은 잘 작동합니다. 동영상을 볼 수 있고 소리도들을 수 있지만 '공간적으로'만 볼 수는 없습니다. 내가 사용하고

: 1.1 GVR SDK, 유니티 5.5.0f3, 아이폰 OS 10.1.1

답변

0

나는 해결책을 찾아 냈다. 나는 중요한 두 가지를 놓치고 있었다 : 첫째로, main.mm으로 어지럽히는 것은 많은 문제를 일으킨다. 사용자 정의 App Controller를 정의하는 올바른 방법은 UnityAppController의 하위 클래스를 만들고 .mm 파일의 맨 아래에 IMPL_APP_CONTROLLER_SUBCLASS (name_of_the_class) 매크로를 추가하는 것입니다. 두 번째로 Unity는 CardboardAppController라고하는 사용자 정의 응용 프로그램 컨트롤러를 자동으로 생성합니다.이 컨트롤러는 빌드 디렉토리의 'Libraries/Plugins/iOS'아래에 있습니다. 그 기능 중 하나는 통합 오디오 효과 플러그인을 등록하는 것입니다. 나는이 파일을 알지 못하고 우회하여 오디오 렌더러를 제대로 초기화하지 못하게했다.

//IMPL_APP_CONTROLLER_SUBCLASS(CardboardAppController) 

그리고 CardboardAppController의 서브 클래스로 새 사용자 정의 컨트롤러를 정의 :

#import "CardboardAppController.h" 

@interface NewAppController : CardboardAppController 
@end 

@implementation NewAppController 
@end 
IMPL_APP_CONTROLLER_SUBCLASS(NewAppController) 
그래서 내 솔루션은 파일 CardboardAppController.mm의 끝 (라인 71)에서 매크로를 주석이었다