[TOC] * * * * * ## 时间轴编辑器(The Timeline Editor) ![](http://7xqa61.com1.z0.glb.clouddn.com/Wechat/GMS文档翻译草稿/编辑器窗口/_image/2017-09-02-16-59-32.png) 在制作游戏时,你往往需要某些事件在某个特定的时间点触发。当然你可以用倒计时Alarm来实现这种功能,但是当游戏里的逻辑越来越复杂时这样的方法可能就行不通了,尤其是GMS2中的计时器有数量限制(12)。这时候就需要用到时间轴了,在时间轴中你可以指定在游戏时间内的特定时刻执行特定的操作,并且可以用不同对象中的事件或代码来定义时间轴。创建好时间轴以后,你可以将其指定给某个对象,然后只要该对象的实例在场景中存在,就会在指定的时间执行对应的操作了。 举个例子,现在要制作一个卫兵,这个卫兵应该先向左走20步,然后向上走10步,然后向右走20步,最后向下走10步,然后停止以完成一次巡逻。要实现这个功能,你可以创建一个时间轴,首先创建一个向左的时刻(moment),然后创建一个名为“20”的时刻设置一个向上的操作,然后创建“30”时刻设置向右的操作,在“50”时刻设置向下的操作,最后在“60”时刻设置为停止。一旦完成这个设置,然后把这个时间轴分配给你的卫兵对象,这个卫兵就会严格按照时间轴行动。你甚至可以在时间轴上设置倒计时,便于在一段时间后重复时间轴的动作,这样这个卫兵就可以自动巡视一个区域。你还可以使用时间轴来更全面地控制游戏,比如创建一个不可见的控制器对象,然后设定一个时间轴在某些时刻创建敌人,然后把分配了这个时间轴的对象实例放进游戏场景中,这样就可以实现简单的定时生成敌人了。 要创建时间轴,可以在右侧资源树时间轴的位置单击右键然后选择创建,然后就会打开最上面的编辑器窗口,其中有如下功能点。 ### 名称(Name) 顾名思义,这里就是用来设置名称的,这个名词只能包含字母数字以及"_"符号,并且必须是唯一不可重复的ID,你可以在代码或拖拽模式中使用这个名称来引用和识别这个时间轴。 ### 时刻(Moment) 在时间轴左侧你可以设定“时刻”的值,这个值代表了在游戏中的步数(Step),因此当你在时间轴中设定了“0”和“60”两个时刻后,就分别会在一开始和经过60帧(游戏中的步数跟帧数绑定)以后分别触发。如果你的游戏场景速度也设置为60,那“60”时刻的时间会在一秒后被触发。你也可以双击时刻的值或右键选择“修改”来修改这个值。要添加新的时刻可以点击“添加”按钮,每次添加新的时刻都会打开一个代码编辑器,你可以在此添加对应的代码或拖拽操作。 ### 时刻名称(Moment Name) 为了方便区分不同的时刻,你可以给时刻设定名称来进行标记。这是一串单纯的字符串,不会在其他任何地方被调用,只是一个标记,方便你理解和管理时间轴的。 在编辑器中时刻栏目可以使用"shift"+鼠标左键来批量选择时刻,或用"ctrl"+鼠标左键可以复选你想要的时刻,在时刻上单击鼠标右键会出现以下菜单: ![](http://7xqa61.com1.z0.glb.clouddn.com/Wechat/GMS文档翻译草稿/编辑器窗口/_image/2017-09-02-17-01-53.png) ### 添加 添加一个新的时刻,这个时刻默认是在前一个时刻后一步触发,比如上一个时刻是120,那这个新添加的默认会是121.你可以使用修改功能自行修改这个值 ### 编辑 这会打开当前的时刻的代码编辑窗口 ### 修改时刻 修改当前时刻的值,效果跟慢速双击相同 ### 修改描述 修改时刻的描述(貌似最新版的GMS2.1里已经没有这个选项了,在代码窗口用///@Description 可以指定) ### 复刻 在当前时刻后复制一个相同的时刻 ### 合并 当你选中多个时刻后,点选此项会把所有时刻合并为一个时刻,包括时刻中的代码也会全部合并到一起 ### 移除 从当前时间轴中删除该时刻 ### 剪切/拷贝/粘贴 如名称所示,可以剪切/拷贝/粘贴某个时刻,也可以使用快捷键"ctrl"+"x,"ctrl"+"c","ctrl"+"v" ### 全选 全选所有时刻,选中后可以使用移除、合并、复刻、剪切和拷贝等多项功能 ### 拖拽模式/代码模式切换 时间轴的代码编辑器默认会使用工程默认的编程模式(GML代码/拖拽模式),无论使用何种模式,都可以使用这个选项把当前时刻切换成另一个模式来进行使用和编辑。