【问题标题】:Inspector variable for selecting a function to be called (Unity3D)用于选择要调用的函数的检查器变量(Unity3D)
【发布时间】:2014-04-02 15:28:21
【问题描述】:

最新版本的 NGUI 有这个很棒的工具,可以让您选择目标脚本中的哪个函数在您单击时将被调用。

基本上,它是检查器中的一个选择框,它会自动填充来自附加到游戏对象的所有脚本的所有函数。

如何生成像这样自动填充的函数列表?

我不想维护一个包含所有可能功能的枚举(包括当前对象可能没有的一些功能)

我尝试查看 NGUI 使用的代码,但它有点太复杂,我现在无法理解。

【问题讨论】:

  • 那么,NGUI 使用的代码是什么,为什么它太复杂了?很可能这是您需要了解的代码才能创建此功能!
  • 有些库使用SendMessage,在这种情况下,您只需要函数名和一个可选参数。它可以工作,但性能不高。 NGUI 可能是using reflection to build a list of methods

标签: unity3d unityscript


【解决方案1】:

如果你想像在 NGUI 中那样做,那么使用 NGUI 本身提供的工具并定义一个公共变量,如下所示:

public List<EventDelegate> DelegateList = new List<EventDelegate>();

这样,您可以将 MonoBehaviour 脚本放在 Inspector 字段中,然后可以选择该脚本中包含的公共方法/委托。

然后您可以像这样调用它们:

void Start() {
  EventDelegate.Execute(DelegateList);
}

现在您的委托列表中的每个方法都将被调用。例如,您可以在用于处理 OnClick 委托的 UIButton 脚本中看到这一点。

【讨论】:

    猜你喜欢
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    • 2022-11-02
    • 2018-02-12
    • 1970-01-01
    • 2020-04-13
    • 2020-09-19
    相关资源
    最近更新 更多