You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中不新增脚本能否在GameObject下拉添加onClick事件?含MRTK Slate相关问题

MRTK Interactable 事件面板下拉菜单逻辑及自定义动作实现

1. GameObject选项的填充逻辑

你在Interactable脚本事件面板看到的下拉菜单是Unity自带的UnityEvent编辑器UI,填充逻辑由Unity内置实现,和MRTK的Interactable脚本无关,具体逻辑如下:

  • 当你给UnityEvent拖拽赋值目标对象后,Unity编辑器会通过反射机制遍历目标对象的所有公共实例方法
  • 方法会按所属类型自动分组:
    • 如果方法属于GameObject类本身,就会被归到最顶部的GameObject分类下,这个分类是所有GameObject对象的默认分类,和对象挂载的组件无关
    • 如果方法属于对象挂载的某个继承自Component的组件类,就会被归到对应组件名的分类下,比如你看到的Transform、SolverHandler等分类都是这么来的

2. 自定义事件动作添加方法

不需要修改Interactable源码,也不需要修改Unity内置逻辑,按以下步骤操作即可将自定义动作添加到下拉菜单中:

  1. 编写自定义脚本,将需要触发的逻辑封装为公共无参方法,示例代码如下:
// 脚本挂到Slate对象上
public class SlateOperation : MonoBehaviour
{
    // 点击关闭按钮时要执行的销毁逻辑
    public void DestroySlate()
    {
        Destroy(gameObject);
    }
}
  1. 回到Interactable的事件配置面板,将Slate对象拖拽到事件的目标对象输入框中
  2. 点开下拉菜单,即可看到和脚本名同名的SlateOperation分类,选中分类下的DestroySlate方法即可完成配置

注:你无法向内置的GameObject分类下添加自定义方法,该分类仅显示Unity官方定义的GameObject类自带方法,自定义方法都会自动归到对应自定义脚本的分类下,使用逻辑和内置方法完全一致。

替代实现方案

如果不想新增脚本,也可以直接使用GameObject分类下的SendMessage方法,在参数框填入你写的方法名即可,不过该方法性能低于直接绑定方法,更推荐用上述自定义脚本的方案。

内容的提问来源于stack exchange,提问作者holouser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 10:18:03