obsidian/笔记文件/2.笔记/定时回调系统_第二章.md
2025-03-26 00:02:56 +08:00

3.1 KiB
Raw Blame History

在画布创建3个按钮分别是添加删除替换

!Pasted image 20230520163053.png

各个按钮绑定功能:

!Pasted image 20230520163448.png

!Pasted image 20230520163626.png

!Pasted image 20230520163641.png

点击添加任务

!Pasted image 20230520170834.png

点击,添加回调正常触发

!Pasted image 20230520170824.png

方便测试删除和替换功能把计数器改成0变成循环任务

!Pasted image 20230520171257.png

重新运行,点击添加任务,进入循环

!Pasted image 20230520173004.png

点击删除任务提示true循环任务中止

!Pasted image 20230520173035.png

重新运行,点击替换按钮,成功替换 2秒后任务完成

!Pasted image 20230520173127.png

开始弄 先整一个帧任务的类包含唯一id回调目标帧整数延迟帧整数计数器

构造函数

!Pasted image 20230520173626.png

整一个帧任务处理的region

!Pasted image 20230520174151.png

先声明帧任务的列表,还有整型帧数

!Pasted image 20230522112921.png

在帧任务的region里先加一个添加帧任务的方法 加到帧缓存任务列表 目标帧是当前帧加上延迟帧

!Pasted image 20230522113044.png

继续整一个删除任务的函数方法 还是先声明一个是否存在的布尔 然后遍历任务列表确认tid是否存在如果存在就移除对应的任务就好

!Pasted image 20230522114619.png

如果在帧任务列表找不到,也有可能是在帧缓存任务列表 也是遍历一遍就好 返回是否存在

!Pasted image 20230522115202.png

写一个 替换帧任务的功能接口 先创建一个新的帧任务然后根据tid遍历帧任务列表如果有满足条件的替换就好

!Pasted image 20230522120819.png

也有可能是在帧任务缓存列表,也是遍历帧任务缓存列表,然后替换就好 最后返回是否替换成功的布尔

!Pasted image 20230522121004.png

写一个添加帧任务 按钮接口

!Pasted image 20230522120615.png

继续,删除帧任务,替换帧任务 按钮接口

!Pasted image 20230522121309.png

弄一个检测帧任务是否达成的函数接口,先把缓冲区的帧任务弄到帧任务列表 清空缓冲帧任务列表 帧数自增 遍历帧任务列表达到目标帧的就通过try catch 执行回调如果条件没满足就continue下一个

!Pasted image 20230522134111.png

然后,移除已完成的帧任务 跟时间任务的处理,逻辑相同

!Pasted image 20230522134446.png

在Update调用

!Pasted image 20230522134558.png

复制几个新的添加、删除、替换 按钮,对应帧任务相关 隐藏原本旧的

!Pasted image 20230522132558.png

换一下添加按钮调用的api接口 其他同理

!Pasted image 20230522132724.png

运行游戏,点添加任务

!Pasted image 20230522134708.png

因为是循环任务,所以会一直打印

!Pasted image 20230522134738.png

删除功能 相关打印信息

!Pasted image 20230522134806.png

替换功能 相关打印信息

!Pasted image 20230522134830.png

逻辑都正常