Gvr Unity SDK (四) —— 焦点事件触发

上一篇讲了《Gvr Unity SDK (三) —— 创建视觉焦点》,在Unity的工作空间中如何为已经创建GameObject对象创建视觉焦点,本节学习如何为创建视觉焦点的GameObject对象触发焦点事件

创建C#脚本文件

在Unity工作空间Project窗口下,为Asstes下的Sample创建一个Script文件夹,里面用来保存C#脚本,然后在里面创建一个叫做CubeScript的脚本,以此为Cube对象响应焦点事件

gvr4-1.png

双击CubeScript打开编辑器进行编辑,根据配置不同,会有Microsoft Visual StudioMono Develop两种工具打开,本例是用Mono Develop进行编辑的。打开文件后,会生成默认的代码配置

gvr4-2.png

编辑C#脚本文件

然后,进行脚本编辑,以下是一个简单的示例来说明:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using UnityEngine;
using System.Collections;

public class CubeScript : MonoBehaviour {

// 定义一个方法,传入boolean类型的参数
public void SetGazedAt(bool gazedAt) {

//通过传入的gazedAt值不同,通过三目运算符真假设置组件渲染材料颜色,true为蓝色、false为黄色
GetComponent<Renderer>().material.color = gazedAt ? Color.blue : Color.yellow;
}

//定义一个向上移动的方法
public void MoveUp() {
//在U3d里用Vector3表示空间内的坐标,参数分别是(float x,float y,float z)
//通过每调用一次该方法,让组件向y轴方向位移1f的距离
transform.position += new Vector3 (0f, 1f, 0f);
}

//程序开始
void Start() {
//调用设置渲染材料颜色的方法,默认设置参数为false
SetGazedAt(false);
}

//当焦点进入组件范围
public void OnGazeEnter() {
,设置渲染材料颜色的方法,设置参数为true
SetGazedAt(true);
}

//当焦点退出组件范围
public void OnGazeExit() {
//设置渲染材料颜色的方法,设置参数为false
SetGazedAt(false);
}

//当点击组件时
public void OnGazeTrigger() {

//调用组件移动的方法
MoveUp();
}
}

绑定C#脚本文件

回到Unity工作空间,选中Cube对象,在Cube右侧Inspetor属性栏的底部,点击Add Component,在搜索栏里输入创建的脚本CubeScript,然后选中添加

gvr4-3.png

添加完成后,点击CubeScript后面的小齿轮,将它Move UpEvent Trigger上面

gvr4-4.png

点击Event Trigger里面的Add New Event Type,添加一个事件类型,选择Pointer Enter,在添加的Pointer Enter面板上,点击右下角的+,添加一项

gvr4-5.png

然后点击左边选择Cube对象,右边下拉框,选择定义的脚本名称CubeScript下面的OnGazeEnter()方法

同理,再两次分别点击Add New Event Type,分别选择Pointer ExitPointer Click,分别点击+,分别选择上Cube对象,分别选择上CubeScript下面的OnGazeExit()方法和OnGazeTrigger()方法

gvr4-6.png

最后点击播放按钮,查看效果,按住Alt,滚动鼠标。

  • 当准星不在Cube对象上,准星是圆点,Cube是黄色

gvr4-7.png

  • 当准星在Cube对象上,准星是圆圈,Cube是蓝色

gvr4-8.png

  • 当准星在Cube对象上,点击CubeCube向上位移1f

gvr4-9.png

本节gvr-unity-sdk 焦点事件触发相关内容到此结束,下一节继续《Gvr Unity SDK (五) —— 添加全景SkyBox》

if (本文对您有用) { Pay (请随意¥打赏) } else { Commit feedback (底部评论区提交建议、反馈) } 感谢支持!