0

UI でボタンが押されたことを検出するクラスを作成しましたが、それ以外には何もしません。コードが実行されると、作成した UI マネージャー クラスがボタンを探してリストに格納します。

私が抱えている問題は、さまざまなボタンにさまざまな機能を持たせたいが、すべて同じ UI マネージャーから実行したいということです。ボタンの関数クラスへの参照を保持したい「ボタン情報」という 3 番目のクラスがありますが、その方法がわかりません。

基本的に、ボタンクラスを次のようにしたいと思います。

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 Engine 内にあるため、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 を割り当てることができます (ここではラムダ式をサポートする必要があります)。

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