GMS优先度引擎、状态管理等发布

12 May 2018 04:04
标签 gms 程序 震雷霆

前一篇: 真象之镜

下一篇: 未来职业事务所

返回文章列表

当当当,发布一个GMS的优先度引擎。

Image Unavailable
优先度引擎

优先度引擎

下载请点击:yoyo市场链接
查看源码:GMS开源插件库
简单介绍几个常用的API。

PriorityInit

PriorityInit();

初始化,在游戏开始或房间创建事件中使用。

返回:N/A
举例:

PriorityInit();

PriorityBegin

PriorityBegin(Priority,id,”inState”[,islistid,isliststate])

添加优先度,在单步中使用。

参数 说明
Priority 添加的优先度的值
id 添加优先度的实例ID
“inState” 添加优先度的状态
islistid 可选,是否将ID生成列表
isliststate 可选,是否将状态生成列表

返回:true/false

id,”inState” 作为一对组合生成一个由逗号隔开的字符串。
string(argument[1])+","+argument[2],作为优先度的value添加到优先度数据中。从数据中获取优先度也是通过这个字符串。

可添加的最高优先度是10000。

可选参数设置后,将会为每个ID或者状态生成一个列表,将同一个ID不同状态,或者同一个状态不同ID的数据添加到列表中方便后续调用。

例如:

//为id+S1状态添加一个优先度为1,并将优先度添加到ID列表和状态列表。
PriorityBegin(1,id,"s1",true,true);

PriorityEnd

PriorityEnd(id,”inState”);

删除一个优先度。

参数 说明
id 需要删除优先度的实例ID
“inState” 需要删除优先度的状态

返回:real

这个函数和PriorityBegin是一对开关,添加优先度后,完成任务后删除。

例如:

if tap PriorityBegin(11,id,"s1",true,true);
else PriorityEnd(id,"s1");

开关开启时添加优先度,结束时删除优先度。

PriorityDo

PriorityDo(Priority)

返回某个优先度的动作是否可以执行。

参数 说明
Priority 检测的优先度的值

返回:true/false

使用这个函数判断是否可以执行一个优先度的任务,如果没有更高的优先度(更低的优先度的值),则返回真,否则假。

if  (PriorityDo(10))
{
tap = !tap;
}

如果没有比10更高的优先度,则执行开关的切换。

状态管理

现在发布的是一个lite开发版,包括了state和custom alarm这两块。专业版的功能有:

  • state与sprite的双层状态
  • 通过bit数设置计时器的开关,多种开启计时器的方式

预计会在下个月先在yoyo市场发布,然后进入一个开源倒计时,之后便在开源的插件库中分享。

具体请参阅StateManage应用文档

评论: 0

新回复
登入为 Wikidot 用户
(将不会发布)
- +

除非特别注明,本页内容采用以下授权方式: Creative Commons Attribution-NonCommercial 3.0 License