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查看器配置文件?
由于
答案 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代码所做出的选择。