Я создаю диспетчер замедленных функций, чтобы вы могли вызвать 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, я не могу получить переменные ourtime и action от него в функции Think! Кто-нибудь знает, как это исправить, или как это сделать лучше?