开发平台:Unity 2021.3.7f1c1
 编程平台:Visual Studio 2022
 编程语言:CSharp 6.0
 三方工具:CameraPath3
  
工具简述
- 在 2019年官方停止版本维护,不再支持 URP 等新版本。而实际业务要求继续使用该开发工具。
 
问题背景

  使用 CameraPath中 Events 模块为其添加触发事件。已确认程序注册上并无多次注册行为。但添加的事件出现多次反复回调问题造成表现存在较大误差,回调多次的无意义程序执行情况。
问题探究

问题祸从犯:HideFlags.HideInInspector
- CameraPath中的 Event 模块实际上依赖于- CameraPathEvent脚本。
- 添加以下代码,扩展菜单,补充增加解除 HideFlag的行为。
[MenuItem("GameObject/HideFlag", false, 10)]
static void MyTestA()
{Transform[] trans = Selection.activeTransform.GetComponentsInChildren<Transform>(true);Array.ForEach(trans, t => { t.gameObject.hideFlags = HideFlags.None; });
}
- 对 CameraPath对象解除隐藏后观察CameraPathEvent。
  
  是的,回调原因是因为 CameraPathEvent 中存在多个同名EventName的情况。与 CameraPath 中显示的有效 Event 严重符合。回到问题本身。CameraPath 处理 Event 或其他模块上有BUG缺陷。
解决方法
方案一:新建 CameraPath + CameraPathAnimator 对象,并导入 XML 数据
虽然显示上存在问题,但通过 XML 数据存储的内容是准确无误,没有将未展示内容数据存至文件中。因此在不改变现有数据条件下,导出为 XML 文件,并重新加载进 新 CameraPath 可直接快速解决问题。
方案二:删除 Hidetag.None 下多余的 CameraEventPoint 组件
应对简单数据内容,可直接删除对应事件即可。但问题非局限于 Event 项,在其他模块中也同样存在相同问题