0

我编写了一个类来检测我的 UI 上的按钮按下,它什么也不做。当代码运行时,我编写的 UI 管理器类会查找按钮并将它们存储在列表中。

我遇到的问题是我希望不同的按钮具有不同的功能,但都可以从同一个 UI 管理器中执行。我有一个名为“按钮信息”的第三类,我想为按钮保存对函数类的引用,但我不知道该怎么做。

基本上,我希望按钮类是这样的:

using System.Collections;
using System.Collections.Generic;

public class ButtonInfo
{
    public int States;
    public int CurrentState;
    public int Animations;
    public void ButtonFunction<T>(); <--- This is the issue!
}

这是在 Unity 引擎中,所以不能使用 C# 的最新功能,但我相信这一定是可能的。

我希望上面类中的“ButtonFunction”能够携带任何类而不是具体的。

可能吗?

干杯,

C。

4

1 回答 1

0

不确定 Unity3d 是否支持此功能(目前无法测试),但您尝试过吗?

public class ButtonInfo<T>
{
    public Action<T> ButtonFunction;
}

或者,如果Action<T>不支持,请尝试普通代表:

public class ButtonInfo<T>
{
    public delegate void ButtonHandler(T param);
    public ButtonHandler ButtonFunction;
}

然后,您可以像这样分配 ButtonFunction(此处应支持 Lambda 表达式):

var x = new ButtonInfo<string>();
x.ButtonFunction += s => { Debug.Log(s); };
于 2012-07-27T08:40:12.787 回答