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