VR之Unity 开发Pico测试之UI和Object的交互
来源:互联网 发布:淘宝云客服在线投诉网 编辑:程序博客网 时间:2024/05/21 08:45
所用工具:Unity 5.3.6,Pico的SDK(官网下载最新版)
第一步:打开unity建立一个新的工程 起名PicoTest;
第二步:导入Sdk;
第三步:建立一个新的scene,保存;
第四步:把PicoVrSdk下的Prefabs 的PicoVr预制件放到Hierarchy下,把原有的MainCamera删掉,接下来开发自己的VR;
测试的主要内容是怎么和UI和物体交互:
用Unity自带的UGUI搭建简单的测试UI进行测试:
先谈一下和UI的交互:交互无非两种,一是通过手柄操作按钮(Pico的手柄的A键相当于鼠标的左键),把脚本里对应的button方法绑定到对应脚本就可以或是通过代码监听(见下面脚本);
二是通过凝视,需要给按钮添加一个组件Eventer Trigger ,点击add new Event Type 选择PointerEnter, 接着绑定方法就好或是通过代码监听见下面脚本);
using UnityEngine;using System.Collections;using UnityEngine.UI;using UnityEngine.EventSystems;public class UItest1 : MonoBehaviour{ private Button btn1; private Button btn2; public delegate void myDelegate(GameObject go); public myDelegate onEnter; // Use this for initialization void Start() { btn1 = this.transform.GetChild(0).GetComponent<Button>(); btn1.onClick.AddListener(BtnClick1);//监听btn1的点击 btn2 = this.transform.GetChild(1).GetComponent<Button>(); EventTriggerListener.Get(btn2.gameObject).onEnter += btnPointerEnter;//监听btn2的凝视方法 }/// <summary> /// btn1的点击方法/// </summary> private void BtnClick1() { Debug.Log("Click"); } /// <summary> /// btn2的凝视方法 /// </summary> /// <param name="go"></param> void btnPointerEnter(GameObject go) { if (go.name == btn2.name) { Debug.Log("PointerEnter"); } }}
上述代码btn1 是点击,btn2是凝视;
另外,要想UI不对SifhtPointer(射线检测)有反应,把Canvas下的Panel,Image,Text等的raycast Target设置为false,button肯定得为True;
对于和物体的交互,要想检测到场景里的3维物体,除了物体自身有collider组建外,还需要对PicoVr下的Head添加一个叫Physics Raycaster的组件;
using UnityEngine;using System.Collections;using UnityEngine.EventSystems;public class ObjectTest : MonoBehaviour { private GameObject obj1; private GameObject obj2; private GameObject obj3;// Use this for initializationvoid Start () { obj1 = this.transform.GetChild(0).gameObject; EventTriggerListener.Get(obj1).onClick += ClickObject; obj2 = this.transform.GetChild(1).gameObject; EventTriggerListener.Get(obj2).onClick += ClickObject; obj3 = this.transform.GetChild(2).gameObject; EventTriggerListener.Get(obj3).onClick += ClickObject;} private void ClickObject(GameObject go) { switch (go.name) { case "Cube": Debug.Log(obj1.name); break; case "Sphere": Debug.Log(obj2.name); break; case "Cylinder": Debug.Log(obj3.name); break; default: break; } }}
0 0
- VR之Unity 开发Pico测试之UI和Object的交互
- Pico +Unity开发VR测试
- iOS开发之交互测试/UI Test
- Unity中Oculus VR的UI凝视交互
- Unity VR游戏开发干货教程:VR中的交互方式
- Unity VR游戏开发干货教程:VR中的交互方式
- Unity3D之VR开发笔记@Oculus开发UNITY环境搭建
- Unity.VR.04MainMenu场景的交互
- Unity3D之VR开发笔记@大朋VR开发UNITY环境搭建
- Unity游戏开发UI之Canvas
- <iOS和Unity交互>之参数传递
- <iOS和Unity交互>之界面跳转
- <iOS和Unity交互>之界面跳转
- Unity.VR.05之3D凝视进度条的实现
- android基础之UI设计与开发--------后台与UI的交互
- 使用HTC和Steam VR进行unity VR的开发第一步
- 使用HTC和Steam VR进行unity VR的开发第二步 (实现功能)
- iOS 开发 Object-C和JavaScript交互详解之OC与JS交互在UIWebView中使用
- 用css绘制常见图形
- C++异常
- Struts 框架
- 大数据性能调优之HBase的RowKey设计
- mybaits+oracle批量操作
- VR之Unity 开发Pico测试之UI和Object的交互
- C语言的基础知识解答
- JAVA基础(31) Java代码计算两个经纬度之间的距离
- Java for Android 基础API整理
- loadView是干嘛用的?
- MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建
- 关于Bmob的后端云的使用---傻瓜式数据库操作
- SSH 登录慢,分析与解决
- 程序语句认识初步