L04.练习

1.OnSceneGUI

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
//有点类似前期Update函数,发送射线
//当选中关联的脚本挂载的物体
//当鼠标在Scene视图下发生变化时,执行该方法,比如鼠标移动,比如鼠标的点击
void OnSceneGUI()
{

if (!isEditor)//非编辑状态下不能生成路点
{
return;
}

//当鼠标按下左键时发射一条射线
//非运行时,使用Event类
//Event.current.button 判断鼠标是哪个按键的(0是鼠标左键)
//Event.current.type 判断鼠标的事件方式的(鼠标按下)
if (Event.current.button == 0 && Event.current.type == EventType.MouseDown)
{
//从鼠标的位置需要发射射线了
//因为是从Scene视图下发射射线,跟场景中的摄像机并没有关系,所以不能使用相机发射射线的方法
//从编辑器GUI中的一个点向世界定义一条射线, 参数一般都是鼠标的坐标
Ray ray = HandleUtility.GUIPointToWorldRay(Event.current.mousePosition);
if (Physics.Raycast(ray, out hit, 100, 1 << 31))
{
//需要在检测到的点实例化,路点
InstancePathNode(hit.point + Vector3.up * 0.1f);
}

}
}

2.Event.current.button

1
Event.current.button 判断鼠标是哪个按键的(0是鼠标左键)

3.Event.current.type

1
Event.current.type 判断鼠标的事件方式的(鼠标按下)

4.HandleUtility.GUIPointToWorldRay

1
从编辑器GUI中的一个点向世界定义一条射线