Unity基于Text的快捷键修改组件

最近做快捷键设置,所以先要做个基础的组件。

因为听说用InputField来改造会有比较多快捷键组件的特性与InputField的特性冲突的地方,比起Text来更加地耗费精力和时间。所以用Text来做了。
请添加图片描述
主要功能包括:

  1. 获得鼠标聚焦时,准备记录键盘输入按键
  2. 快捷键记录时,过滤鼠标按键
  3. 按下Enter键或者鼠标点击快捷键组件以外的区域完成修改
  4. 按下esc键撤销修改,并退出修改
  5. 按下退格键删除改快捷键的所有键盘按键并完成修改
  6. 单个快捷键最多允许输入三个键盘按键
  7. 聚焦时高亮,退出修改低亮

逻辑是有点复杂了,分支比较多。

因为是简单组件类,后面修改的可能性不大,就只是尽量面向对象的方式,考虑单一职责原则,将该作为单个功能分出去的类分出去。


按键判断类
快捷键数据类
快捷键组件类
高亮控制类四个部分

只有高亮控制类没有接受业务逻辑类的控制,可能会存在高亮和业务逻辑的需求不统一的情况, 后面可以考虑加上。目前测试一切正常。

需要注意:

  1. 继承ISelectHandler和IDeselectHandler的脚本,接口的方法起效需要在脚本的同个物体上挂载Selectable组件。这两个接口的方法在组件被选中和取消选中的时候会被回调。 参考
    unity中关于UGUI的接口(点击 选择 系统按键等)

  2. 代码执行取消选中物体通过 EventSystem.current.SetSelectedGameObject(null);实现,这句话不能连续调用两次,即连续写两遍,会报错。

工程地址

猜你喜欢

转载自blog.csdn.net/weixin_43149049/article/details/126255667
今日推荐