12 May 2018 04:04
标签 gms 程序 震雷霆
优先度引擎 |
优先度引擎
下载请点击: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应用文档。
帖文预览:
关闭预览