J'utilise le motif de commande pour suivre le mouvement des "replays" plus tard. Lorsque je fais cela, les actions se rejouent correctement, mais plus lentement. J'ai essayé les deux coroutines et Update()
et le problème persiste.Unité | Commande Mot de passe Lecture Différence Différence
I d'abord avoir une InvocateurPlayerControl
qui contient une liste de ICommand
« s.
//Properties
private List<ICommand> oldCommands = new List<ICommand>();
private int updateIterationTracker = 0;
Pour chaque commande invoquée, j'ajoute la commande à la liste.
//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();
}
À un certain moment une « reprise » est déclenchée et j'itérer les commandes oldCommands
.
Cette fonctionnalité fonctionne. Tout comme le fait l'entrée move, le déclenchement de la commande de déplacement s'exécute.
private void IterateUpdateOnReplay(){
if(iteration < oldCommands.Count){
transform.position = replayStartPosition;
}
oldCommands[iteration].Execute();
iteration++;
}
J'ai aussi fait cela dans une coroutine.
La lecture peut exécuter les mouvements dans le bon ordre et les mouvements peuvent se produire, mais le temps qu'il faut pour exécuter toute la séquence est plus longue que le temps qu'il a fallu à l'enregistrement initial. La lecture est plus longue.
Questions:
1) Est-ce la capture initiale
oldCommands.Add(dirUp); //Add the command to the list of commands
ajouter trop de commandes pour lire au rythme correct, ralenti par des temps d'exécution?
2) Y at-il une autre question potentiellement causer ce retard que je ne connais pas?
Vous devez effectuer l'échantillonnage sur les objets du jeu que vous souhaitez stocker leur position puis stocker les données dans class.Maybe 30 fois par-sec? Cela dépend de la façon dont vous voulez qu'il soit lisse. Vous pouvez ensuite les boucler plus tard pour les lire et ensuite retarder avec l'heure dans la classe stockée. Commencez par [ici] (http://stackoverflow.com/a/40732139/3785314). – Programmer
Cela ne va-t-il pas à l'encontre d'un modèle de commande? Au lieu de stocker toutes les données pour la classe, vous appelez simplement les mêmes commandes dans le même ordre et la relecture doit être identique. – Ryanthehouse