从脚本

时间:2015-07-30 10:27:40

标签: android unity3d google-cardboard

Google cardboard SDK允许我们通过扫描设置中的QR码从Unity应用加载任何VR查看器配置文件。我已经为不同的VR耳机设置了不同的QR码,我想从脚本中加载它们,这样用户就可以从我的菜单中选择他们的设备,而无需在互联网上搜索正确的QR码并进行扫描。

我尝试扫描并设置自定义VR查看器配置文件,该配置文件按预期工作。我尝试通过从Cardboard类中序列化CardboardProfile对象来在SD卡上保存此配置文件,如下所示:

Serialize (file,Cardboard.device.Profile);

然后我尝试在Cardboard初始化时加载此自定义配置文件。 我将Profile变量设置为Cardboard类的InitDevice()函数中的自定义配置文件:

device = BaseVRDevice.GetDevice();
device.Profile = GetComponent<ProfileReader>().Load ();
device.Init();

其中GetComponent<ProfileReader>().Load ()返回我的自定义反序列化CardboardProfile表单的Resources文件夹(我用sdcard中的序列化对象复制文件)。我将所有需要的变量设置为public并调整setter以便我可以访问它们。 (de)序列化步骤工作正常。我的CardboardProfile C#对象有效,我仔细检查了这些值。但是失真和视口不会改变。它仍设置为默认的查看器配置文件。

如何知道如何从脚本中更改这些VR查看器配置文件?

由于

3 个答案:

答案 0 :(得分:1)

好的,找到了。对于那些想要从脚本更改VR查看器配置文件的用户,请查看VRDevice.cs文件,尤其是UpdateView()UpdateProfile()函数。 它们通过GetViewParameters(viewData)GetProfile(profileData)调用加载两个浮点数组。这些数组(viewData和profileData)可以轻松保存,序列化和加载。确保随后调用UpdateScreenData()以应用更改。

答案 1 :(得分:1)

根据this回答,您可以在Cardboard.cs中设置默认配置文件

例如:

public Uri DefaultDeviceProfile = new Uri("http://google.com/cardboard/cfg?p=ChlVbm9mZmljaWFsIENhcmRib2FyZCBJbmMuEgtVQyAyLjAgUGx1cx2e7yc9JSUGgT0qEAAASEIAAEhCAABIQgAASEJYATUpXA89Ogh7FK4-zcwMP1AAYAM");

我通过扫描非官方Cardboard 2.0 plus,h t t p : / / g o o . g l /NKZrps上的个人资料二维码获得该网址,然后在curl之后输入该内容以获取重定向网址:

curl g o o . g l /NKZrps

注意:stackoverflow不允许url shorteners,所以我不得不添加空格。

当然,这不允许您为用户创建选项菜单,但只有在您知道用户将使用的内容时才预设选项。

答案 2 :(得分:0)

这不太正确,因为它只告诉Unity层有关您加载的配置文件,而不是C ++层。此外,从脚本设置配置文件并不意味着SDK的使用方式,因为您的应用程序正在占用配置文件,从而覆盖用户通过扫描QR代码所做出的选择。