void OtherCommandLogic(EntityBase entity) { PlayerCommandRecordComponent rc = entity.GetComp <PlayerCommandRecordComponent>(); //先取服务器缓存 T cmd = (T)rc.GetServerCache(m_world.FrameCount); //没有的话预测一份 if (cmd == null) { //Debug.Log("预测输入 id: " + entity.ID + " m_world.FrameCount " + m_world.FrameCount); //取最后一次输入缓存,没有的话New一个新的 if (rc.m_lastInput == null) { cmd = new T(); } else { cmd = (T)rc.m_lastInput.DeepCopy(); } cmd.id = entity.ID; cmd.frame = m_world.FrameCount; rc.m_forecastInput = cmd; } else { //Debug.Log("读取缓存 "); } rc.m_lastInput = cmd; rc.m_inputCache.Add(cmd); entity.ChangeComp(cmd); }