0
我使用命令模式後追蹤「回放」運動。當我這樣做時,動作會正確重播,但速度會更慢。我已經嘗試了兩個協程,並且Update()
,問題依然存在。Unity |命令模式播放時間差
我第一次有一個祈求PlayerControl
持有的ICommand
的列表。
//Properties
private List<ICommand> oldCommands = new List<ICommand>();
private int updateIterationTracker = 0;
對於每一個調用的命令,我將命令添加到列表中。
//If Input moves up, invoke the move up command
if (dirVector.y > 0)
{
oldCommands.Add(dirUp); //Add the command to the list of commands
dirUp.Execute();
}
在某些時候「重放」被觸發,我在命令中oldCommands
迭代。
此功能工作。就像移動輸入一樣,觸發命令移動執行。
private void IterateUpdateOnReplay(){
if(iteration < oldCommands.Count){
transform.position = replayStartPosition;
}
oldCommands[iteration].Execute();
iteration++;
}
我在協同程序中也這樣做了。
回放可以以正確的順序執行的動作和可能發生的動作,但所花費的時間來執行整個序列比它採取在初始記錄的時間長。 播放時間更長。
問題:
1)是初始捕獲
oldCommands.Add(dirUp); //Add the command to the list of commands
加入過多的命令,在正確的速度回放,慢下來的執行時間?
2)是否有可能造成這種延遲,我不知道的另一個問題?
您需要對遊戲對象進行抽樣以保存其位置,然後將數據存儲在課堂中。可能每秒30次?這取決於你想要它有多光滑。然後,您可以稍後循環播放它們,然後在存儲的類中延遲時間。從[這裏]開始(http://stackoverflow.com/a/40732139/3785314)。 – Programmer
那豈不是違背命令模式的意義呢?不要爲類存儲所有數據,只需按相同的順序調用相同的命令,並且重放應該相同。 – Ryanthehouse