如何在 Unity 编辑器中创建对话框?首先创建一个对话框的脚本:
当前脚本就是对话框的类,脚本继承 Unity 的 ScriptableWizard,该脚本必须放置在 Editor 文件夹下,但是光有这脚本还不够,我们还需要 MenuItem 来显示我们的对话框:
这里的话直接将 MenuItem 放置在对话框类中,其实 MenuItem 可以在其它地方使用,毕竟是静态方法,当然也是限制于 Editor 文件夹下。脚本中创建了自定义按钮,点击按钮就能触发方法了,方法中使用到ScriptableWizard 的方法来显示我们的对话框,DisplayWizard 需要传入对话框类型也就是当前创建的 MyWizard。方法的传入参数有两个,第一个是对话框的名称,这个好理解,第二个是对话框默认按钮的显示内容,光说不好理解,直接上效果图:
有了按钮,必然存在事件触发,在对话框类中可以这样写:
了解到这,可能还是不太理解这跟批量处理有啥关系,需求来了:将项目中存在的脚本组件进行属性的批量修改。
怎么做呢?借由之前的 Player 代码举例:
我们需要批量修改 Player 中的两个属性,之前的对话框类中其实也已经定义好了对应的属性。批量修改的话就得交给 Selection 处理了。
简单的代码实现如上,代码中涉及到的 Undo 是为了撤销操作弄的,以防批量处理后出错可以回退,Undo 保存的就是 Player 对象上一步的数据。这里所谓的批量其实也就是通过鼠标多选物体后对其选中对象进行脚本组件属性的批量更新而已。
领取专属 10元无门槛券
私享最新 技术干货