GVR Audio Renderer未找到iOS

时间:2017-01-22 01:49:17

标签: ios objective-c xcode unity3d google-vr

我正在修补Google VR SDK for Unity中的示例项目“SpatialAudio”,以便在iOS中实现它。 我使用最新的GVR SDK在Unity中构建它,所以我不得不替换一些弃用的关键字(GvrAudioSource而不是CardboardAudioSource等) 如果我像在Unity中给我一样在Xcode中构建它,它在物理设备中运行良好。 然后,我尝试编辑Unity生成的文件'main.mm',将默认的App Controller(UnityAppController)更改为新的,让我们称之为NewAppController。

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

NewAppController是一个继承自UnityAppController的类,不会覆盖它的任何方法或属性,如下所示:

@interface NewAppController : UnityAppController
@end

@implementation NewAppController
@end

我认为它应该与以前完全相同,但现在我在运行时收到以下警告: “无法找到音频效果GVR音频渲染器。请检查项目是否包含正确的本机音频插件库,以及导入器设置是否已正确设置。”

其他一切工作正常:我可以看到视频,甚至可以听到声音,但只有它们没有“空间化”。

我正在使用: GVR SDK 1.1, Unity 5.5.0f3, iOS 10.1.1

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我错过了两件重要的事情:首先,搞乱main.mm会造成很多麻烦。定义自定义App Controller的正确方法是创建UnityAppController的子类,并在其.mm文件的底部添加宏IMPL_APP_CONTROLLER_SUBCLASS(name_of_the_class)。其次,Unity自动生成一个名为CardboardAppController的自定义app控制器,它位于构建目录中的Libraries / Plugins / iOS'下。其功能之一是注册单位音频效果插件。我在不知道的情况下绕过了这个文件,导致音频渲染器没有正确初始化。所以我的解决方案是在CardboardAppController.mm文件末尾注释掉宏(第71行):

 //IMPL_APP_CONTROLLER_SUBCLASS(CardboardAppController)

将新的自定义控制器定义为CardboardAppController的子类:

 #import "CardboardAppController.h"

 @interface NewAppController : CardboardAppController
 @end

 @implementation NewAppController
 @end
 IMPL_APP_CONTROLLER_SUBCLASS(NewAppController)