[英]Passing an unknown class as a parameter (C#)
我已經編寫了一個類來檢測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 Engine中,因此不能使用C#的最新功能,但是我敢肯定這是可能的。
我希望上面的類中的“ ButtonFunction”能夠攜帶任何類而無需具體說明。
可能嗎?
干杯,
C。
不知道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); };
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.