一、全局窥探
通过全局搜索可以发现跟Raycaster相关的类主要是,BaseRaycaster,PhysicsRaycaster,GraphicRaycaster,Physics2DRaycaster,RaycastResult,RaycasterManager。接下来,我们从几个方面入手来分析射线相关的内容。
1、射线相关类的功能
2、射线类的使用
二、射线相关类功能
根据名字,我们可以猜测到BaseRaycaster是所有射线类处理的基类,所以我们先从这个类开始分析。
1、BaseRaycaster:根据注释,可以看到该类是所有射线类的基类,主要负责的是决定是否点击场景中的元素,默认包括PhysicsRaycaster,GraphicRaycaster,Physics2DRaycaster三种类型,但是也可以允许用户自己去定义新的射线类。
主要处理的功能是在OnEnable()中将脚本注册到RaycasterManager,在OnDisable()中将脚本从RaycasterManager删除。
2、RaycasterManager,主要负责将所有射线脚本注册和删除。查看逻辑,我们看到,RaycasterManager主要是被BaseRaycaster进行注册和删除,以及通过EventSystem使用。
EventSystem调用逻辑:(流程图麻烦,还是直接手撸)
EventSystem.Update()--->InputMoudle.process()-->InputMoudle.ProcessTouchEvents()-->InputMoudle.G