首页 > 解决方案 > 列出记录播放器动作

问题描述

我目前正在尝试测试我所拥有的 3D 概念,该概念涉及使用“过去的自我”或玩家的克隆来完成关卡。

我的第一个想法是只记录变换位置并相应地移动克隆,但这不允许您与过去的自我互动并产生悖论(这是您无法通过关卡的方式之一)

所以我需要记录玩家的输入(左、右、抓取、跳跃和蹲下),然后在玩家的克隆上实例化它们,该克隆只会播放记录列表中的输入,而不是键盘。唯一的问题是我仍在努力掌握列表,所以我需要有关如何添加到列表的帮助。

CloneMovement(bool Jump,bool Crouch, bool Left, bool Right, bool Grab, bool Check)

标签: c#unity3d

解决方案


创建和添加到列表非常简单。

创建列表:

List<float> listOfFloats = new List<float>();

尖括号中的数据类型可以是任何类型,例如List<Vector3>List<MyCustomClass>。重要的是列表只能保存一种数据类型的对象或值。你不能有一个包含整数、字符串和布尔值的列表。

添加到列表:

listOfFloats.Add(10f);

从列表中删除:

listOfFloats.Remove(10f); // this will remove the FIRST 10f value it finds
listOfFloats.RemoveAll(10f) // this remove all 10f values

Remove 方法也有返回值是毫无价值的。他们将返回他们删除的值、对象或列表。

现在,重要的是……列表可能不是解决您的问题的最佳集合类型。

您正在处理一系列事件。事件按顺序发生,除非该顺序需要是可变的,否则您最好使用队列。

使用队列,您始终知道队列中的第一项是添加到队列中的第一个项目。因此,如果您从头到尾遍历队列,您将按顺序读取内容。

注意:如果您真的想知道如何记录一系列事件并在以后的某个任意时间以正确的顺序和正确的时间回放。这是一个非常非常大的问题需要回答。


推荐阅读