我正在创建一个延迟功能管理器,以便您可以拨打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