DayDreamSDK
来源:互联网 发布:阿里云服务器上传网站 编辑:程序博客网 时间:2024/06/15 09:03
DayDream简介
是谷歌在2016年11月10日发布的一个虚拟现实(VR)平台
是由一个头盔、一个控制器和很多兼容智能手机组成(头盔为布)
DayDream平台的官方文档:https://developers.goole.com/vr/daydream/overview
下载DayDream的SDK:
(1)打开DayDream平台的官方文档
(2)Google VR SDK for Unity [可以先看Demo,然后将其SDK导入游戏中]
(3)接DayDream的SDK需要使用Unity5.6以上
DayDream控制器坐标系:
DayDream控制器的说明:
从上到下的三个键依次为:确定键(ClickButtonUp、ClickButtonDown)
返回键(AppButtonUp、AppButtonDown)
菜单键(HomeButtonUp、HomeButtonDown)
eg:如果不知道返回键的监听是那个,可以在Project面板中搜索Input,如果不知道控制器上面的那个键是什么键,可以查看带有Input的脚本。
如果不知道控制器上面的返回键叫什么,可以创建一个Scene场景:仿照Demo,自己加上一些代码,以DayDream的SDK的Demo为例,
在重新创建一个场景,点击不同的按钮,跳转到相应的Demo
(1)创建一个UGUI的Button,点击控制器上面的按钮,Text可以显示点击的分别是那个按钮,对应跳转到那个场景
(2)
using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.SceneManagement;public class TestManager : MonoBehaviour { public void Click(int index) { if (index == 1) { // LoadSceneMode:场景加载模式 // Single:关闭所有场景,只打开一个场景 SceneManager.LoadScene("GVRDemo", LoadSceneMode.Single); } else if (index == 2) { SceneManager.LoadScene("KeyboardDemo", LoadSceneMode.Single); } else if (index == 3) { SceneManager.LoadScene("PermissionsDemo", LoadSceneMode.Single); } else if (index == 4) { SceneManager.LoadScene("ScrollingUIDemo", LoadSceneMode.Single); } else if (index == 5) { SceneManager.LoadScene("VideoDemo", LoadSceneMode.Single); } }}
(3)将相应的Button设置为相应的index
(4)创建一个Text,编辑脚本TestInput.cs
using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class TestInput : MonoBehaviour { public Text text;// Update is called once per frame void Update() { if (GvrControllerInput.AppButtonUp) text.text="AppButtonUp"; if (GvrControllerInput.AppButtonDown) text.text="AppButtonDown";if (GvrControllerInput.ClickButtonUp) text.text="ClickButtonUp"; if (GvrControllerInput.ClickButtonDown) text.text="ClickButtonDown"; }}
这样,控制器分别对应的键就找到了。
DayDream的摄像机
在DayDreamSDK的官方Demo中,可以看到DayDream的摄像机名为Player,下面为Player的结构
Player
Main CameraDay Dream摄像机
GvrReticlePointer DayDream头盔上面的点
GvrControllerPointer DayDream控制器上面的点
ControllerVisual DayDream控制器模型(若手里有枪,把枪放到此控制器模型的位置上面,将此控制器的模型隐藏,这样,控制器的模型就换成枪的模型)
Laser DayDream控制器上面的射线
Reticle
除此之外,你会发现官方的Demo除了这些,每个场景必须还会有的是
GvrEditorEmulator DayDream平台的模拟器(在电脑上测试的时候用到,可以减少一点打包测试的麻烦)
GvrEventSystem DayDream平台的EventSystem
GvrControllerMain DayDream的GvrControllerInput脚本在此挂着
同时,在DayDream的官方Demo中还可以看到,每个Canvas上面都加了GvrPointerGraphic Raycaster(需要注意的是DayDream的Raycaster和所接的项目中
Player
Main CameraDay Dream摄像机
GvrReticlePointer DayDream头盔上面的点
GvrControllerPointer DayDream控制器上面的点
ControllerVisual DayDream控制器模型(若手里有枪,把枪放到此控制器模型的位置上面,将此控制器的模型隐藏,这样,控制器的模型就换成枪的模型)
Laser DayDream控制器上面的射线
Reticle
除此之外,你会发现官方的Demo除了这些,每个场景必须还会有的是
GvrEditorEmulator DayDream平台的模拟器(在电脑上测试的时候用到,可以减少一点打包测试的麻烦)
GvrEventSystem DayDream平台的EventSystem
GvrControllerMain DayDream的GvrControllerInput脚本在此挂着
同时,在DayDream的官方Demo中还可以看到,每个Canvas上面都加了GvrPointerGraphic Raycaster(需要注意的是DayDream的Raycaster和所接的项目中
使用UGUI的EventSystem不要同时使用,可能会造成,控制器打击不到UI的情况)所以,DayDream的摄像机这一套在接入SDK的时候是必需的。
PlaySetting的设置:
在File -- BuildSetting -- PlayerSetings -- Other Settings
先勾选 Virtual Reality Supported之后选择平台,在这个选择DayDream平台,以及配置好Minmum API level(在这里选择的是Androud7.0 API level24)
注意:接入SDK之前,再接SDK首先配置好SDK和JDK的路径。
Canvas的设置(当项目中有些场景位置不对的时候):
任意选中一个场景,Canvas Inspector面板中的RenderMonde中先选择Screen Space - Camera模式 (Canvas由一个特定的相机渲染,
PlaySetting的设置:
在File -- BuildSetting -- PlayerSetings -- Other Settings
先勾选 Virtual Reality Supported之后选择平台,在这个选择DayDream平台,以及配置好Minmum API level(在这里选择的是Androud7.0 API level24)
注意:接入SDK之前,再接SDK首先配置好SDK和JDK的路径。
Canvas的设置(当项目中有些场景位置不对的时候):
任意选中一个场景,Canvas Inspector面板中的RenderMonde中先选择Screen Space - Camera模式 (Canvas由一个特定的相机渲染,
相机的设置会影响UI)将DayDream下面的MainCamera拖进Event Camera,之后再将RenderMonde在选择WordSpace模式(使Canvas像场景中的其他对象一样渲染)
DayDream的一些注意事项:
(1)在GvrEditorEmulator上面挂载的GvrEditorEmulator脚本
DayDream的一些注意事项:
(1)在GvrEditorEmulator上面挂载的GvrEditorEmulator脚本
在电脑中测试的时候,按下Alt可以和鼠标、Ctrl和鼠标可以转换视角
(2)在GvrControllerMain上面挂载的GvrControllerInput的脚本
(2)在GvrControllerMain上面挂载的GvrControllerInput的脚本
在电脑中测试的时候 Shitf和移动鼠标可以改变方向、Shift和点击鼠标左键可以点击进入(相当于手柄上面的ClickButton键)等
遇到的一些Debug:
1、DayDream上面的Mask遮罩问题
在File -- BuildSetting -- PlayerSetings -- Other Settings -- Virtual Reality SDKs -- DayDream -- Depth Format -- 24-bit depth | 8-bit depth
2、DayDream上面的射线无法检测到UI的问题
因为有两个Raycaster DayDream上面的Raycaster和Canvas上面的Raycaster,去掉Canvas上面的Graphic Raycaster 其次就要检查DayDream的那一套预制体
3、无拖尾效果
因为在Unity5.6之后,将有拖尾效果的物体作为一个物体的子物体,那么这个球就没有拖尾效果,需要修改代码
4、点击UI界面发球
使用协程的话,项目中走不到协程的方法(没有找到原因),后来使用的TimeManager解决的[将代码TimeManager.cs和UI_GamePause_Manager.cs添加到代码片段]
5、道具的回归位置偏了
因为物体的Tag值没有设对
DayDreamVRINCO
DayDream的项目上传的时候DayDream的VRHome中要有图标
DayDream VRHome中的图标是由两张图组成,一个为前景图,一个为后景图(eg:两张图的名字分明为"CosmosCrash2_Front"和"CosmosCrash2_Back")
(1)将两张图片的Texture Type设置为Defult,不要勾选sRGB和Alpha is Transparency 以及Compression选择为高精度,如下:
遇到的一些Debug:
1、DayDream上面的Mask遮罩问题
在File -- BuildSetting -- PlayerSetings -- Other Settings -- Virtual Reality SDKs -- DayDream -- Depth Format -- 24-bit depth | 8-bit depth
2、DayDream上面的射线无法检测到UI的问题
因为有两个Raycaster DayDream上面的Raycaster和Canvas上面的Raycaster,去掉Canvas上面的Graphic Raycaster 其次就要检查DayDream的那一套预制体
3、无拖尾效果
因为在Unity5.6之后,将有拖尾效果的物体作为一个物体的子物体,那么这个球就没有拖尾效果,需要修改代码
4、点击UI界面发球
使用协程的话,项目中走不到协程的方法(没有找到原因),后来使用的TimeManager解决的[将代码TimeManager.cs和UI_GamePause_Manager.cs添加到代码片段]
5、道具的回归位置偏了
因为物体的Tag值没有设对
DayDreamVRINCO
DayDream的项目上传的时候DayDream的VRHome中要有图标
DayDream VRHome中的图标是由两张图组成,一个为前景图,一个为后景图(eg:两张图的名字分明为"CosmosCrash2_Front"和"CosmosCrash2_Back")
(1)将两张图片的Texture Type设置为Defult,不要勾选sRGB和Alpha is Transparency 以及Compression选择为高精度,如下:
(2)将项目本身的ICON(在这里为"desktop_icon") 选入File -- Build -- PlayerSetting -- ICON,勾选Override for Android,不要勾选Enable Android Banner
(3)将"CosmosCrash2_Front" 拖入File -- Build -- PlayerSetting -- Default ICON
(3)将"CosmosCrash2_Front" 拖入File -- Build -- PlayerSetting -- Default ICON
(4)File -- Build -- PlayerSetting -- OtherSettings -- DayDream下面的Foreground Icon和Background Icon选择相应的前景和背景图
这样,在DayDream的VRHome中就会有了VRICON的图标。
阅读全文
0 0
- DayDreamSDK
- 解决springMVC4下使用@ResponseBody 返回json数据的中文乱码问题
- Android多线程断点续传
- 浅谈JavaScript严格模式
- is-a 和 has-a
- activity1
- DayDreamSDK
- 读CopyOnWriteArrayList有感
- 如何利用tf.add_to_collection、tf.get_collection以及tf.add_n来简化正则项的计算
- PHPCMS V9 如何启用伪静态
- Android进程整理
- 【BigHereo 36】---L9---C++真题之 改错题
- Android 8.0 Oreo:您需要知道的功能与更新
- yii框架redis结合php实现秒杀
- spring boot 集成 quartz,实现动态控制