我正在創建一個延遲功能管理器,以便您可以撥打TimeManager.DelayedCall(uniqueid, delay, action)
使action
在delay
秒內被調用。但是,我遇到了一些麻煩。這是迄今爲止的代碼。如何從已轉換爲對象的匿名類型獲取數據?
private static Dictionary<string, object> delays = new Dictionary<string, object>();
public static void Think(float dt)
{
timestep = dt * timescale;
time += timestep;
foreach (KeyValuePair<string, object> kv in delays)
{
if (time > kv.Value.ourtime)
{
kv.Value.action();
}
}
}
public static void DelayedCall(string id, float delay, Action a)
{
delays[id] = new { ourtime = time + delay, action = a };
}
此代碼不能編譯。因爲我將DelayedCall
函數中的匿名類型轉換爲object
,所以我無法從Think
函數中獲取變量ourtime
和action
!有誰知道如何解決這個問題,或者如何以更好的方式做到這一點?
對不起,同樣的事情又另一篇文章 - 那裏,當我開始打字都沒有答案。 – Sisyphus 2011-03-13 01:11:24
就是這樣。最清晰的帖子通常會贏得獎品,而不是最快的帖子。 – 2011-03-13 01:15:43
我想我是懶得做一個單獨的類,但我想我得做,現在反正!乾杯! – Dlaor 2011-03-13 01:18:53