在画布创建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]]
逻辑都正常