前言
是有一个网友私信我这个问题,作为一个VR的备用插件有些东西没有研究那么深我也不知道,转念一想万一以后用到了,还是研究一下的好
正文
整理一下思路:
VR的插件都会在Canvas上挂一个自定义的Raycast脚本,通过查看CanvasRaycastTarget脚本发现里面主要走了CanvasRaycastMethod脚本的方法,点进去就看到了跟射线相关的一个方法,以及一个很熟悉的结构体 RaycastResult
public override void Raycast(Ray ray, float distance, List<RaycastResult> raycastResults)
在Unity的EventSystem跟GraphicRaycaster脚本里都出现过RaycastResult,来看一下
RaycastResult用于存储射线碰撞到的物体的信息,跟RaycastHit作用相似
在CanvasRaycastMethod的父类BaseRaycastMethod里只有一个Pointer3DRaycaster类型的变量,我们再点进去查看,发现有三个分别存储Pointer3DEventData,RaycastResult,Vector3的链表,通过名字大概率猜到应该是sortedRaycastResults了
通过搜索发现是挂在左右手的EventRaycaster上,而且发现GraphicRaycastMethod也是继承BaseRaycastMethod的
写段代码测试一下
奶思!不亏是我(手动狗头)