【发布时间】:2015-05-26 23:04:59
【问题描述】:
我正在创建一个延迟函数管理器,以便您可以调用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!有谁知道如何解决这个问题,或者如何以更好的方式做到这一点?
【问题讨论】:
标签: c#