一.VRTK
1.VRTK快速了解
2.模拟VR手柄头盔的设置
VRTK和SteamVR的配置
① 创建空对象 命名[VRTKManager] 添加脚本 VRTK_SDK Manager
② 在[VRTKManager]下创建空对象 命名[VRTKSetUp] 添加脚本 VRTK_SDK Setup
③ 在[VRTKSetUp]下 放入 预制体 [CameraRig] 和 [SteamVR]
④ 创建空对象 命名[Controller]
⑤ 在[Controller]下 创建两个空对象 分别命名为[LeftController]和[RightController],并将其放入到[VRTKManger]的 Script Aliases中(相对应)
⑥ 此时,点击VRTK_SDK Manager中的Auto Populate 自动配置SteamVR,从而实现设备的基本操作
⑦ 模拟VR手柄头盔,创建空对象 命名为 [Simulator],并将预制体 [VRSimulator_CameraRig]放入,再次点击 VRTK_SDK Manager中的Auto Populate,实现配置Simulator(模拟器)
⑧ 提示:VRTK_SDK Manager进行Auto 识别时,要先对SteamVR进行识别,之后在对Simulator模拟器进行识别,否则就会无法访问到模拟器
3.光标指针
4.3DUI
Canvas的Render Mode选为 WorldSpace 调整画布的大小 进而来调整canvas内其他UI的大小
二.UGUI
1.UGUI 事件处理流程:
① EventSystem 每帧调用 BaseInputModule 中 Process 方法。
(实现类:StandaloneInputModule/TouchInputModule 移动端)
② 计算光标接触的物体(Graphic)
—Process 方法调用 BaseRaycaster 的Raycast 方法获取所有 Graphic
(实现类:GraphicRaycaster/PhysicsRaycaster/Physics2DRaycaster)
—通过Graphic 的 IsRaycastLocationValid 方法确定光标选中的 Graphic
③ 通过ExecuteEvents引发物体的相关事件
—调用Execute 方法获取相关接口类型对象,再调用其接口方法
个人总结:通过调用 EventSystem 方法 执行子类 InputModule方法(多态),来获取Graphic,而UGUI中检测到的是 Graphic包括 Image 、Texture和RawImage ,其最终继承的都含有Graphic。之后通过调用Execute方法来用接口进行实现。
UGUI的检测并不是发射射线来进行检测,而是判断在画布内是否有点击输入
IsRaycastLocationVaild是虚方法,可以根据需求重写修改
2.VRTK_UI 事件处理流程:
① VRTK_EventSystem 创建VRTK_VRINputModule对象并每帧调用其Process 方法
② 计算光标接触的物体(Graphic)
—Process 方法调用 BaseRaycaster 的Raycast 方法获取所有 Graphic
(实现类:VRTK_UIGraphicRaycaster)
—通过Graphic 的IsRaycasstLocationValid 方法确定手柄选中的Graphic
(从VRTK_UIPoniter所在物体位置,向其forward 方向发出射线)
③ 通过ExecuteEvents 引发物体的相关事件
—调用Execute 方法获取相关接口类型对象,再调用其接口方法
3.VR UI框架
① unity声明周期