下载 App

如何解决协程冲突的问题

2023/07/20523 浏览综合
有时候你们会遇到这种报错cannot wrap coroutine by main thread!!!
(即使现在没遇到,以后也会遇到的[嗒啦啦4_坏笑])
意思是主线程中不能包裹协程。
协程是啥呢,百度一下虽然能得到结果,但有些没有基础的萌新可能看不懂。
但我们不需要懂,只需要知道,当发生这种错误的时候,如何解决就可以了。
你只需要理解,这个报错是告诉你,一段语句中包含了一个协程,但这段语句是不能包含协程的。
那怎么办呢?办法就是把这个协程分离出去。
如何分离这个协程呢?
首先,要找到这个协程在哪里。报错会告诉你哪里包含了这个协程。比如下面这个报错,就告诉我在我的函数“广告云处理”中,包含了这个协程:
common/base/co.lua:41: cannot wrap coroutine by main thread!!!
stack traceback:
[C]: in function 'error'
common/base/co.lua:41: in function <common/base/co.lua:37>
(...tail calls...)
tds_score/use_mysql.lua:125: in field 'commit'
common/base/tds_score.lua:21: in method 'commit'
array_ec1b/trigger_module_main.lua:9486: in method '广告云处理'
array_ec1b/trigger_module_main.lua:9520: in upvalue 'cb'
common/base/ad/init.lua:18: in function <common/base/ad/init.lua:15>
然后,重点来了,如何把这个协程分离?
很简单,自定义一个事件A,在原来执行这个协程的地方,删掉执行协程的语句,发送这个事件A。
再然后,新建一个事件A的触发器,在这个触发器里执行这个协程。
比如下图,我新建了一个“广告奖励事件”,并在原来执行广告云处理的地方,发送这个事件:
TapTap
红框处原来执行了广告云处理等包含协程的语句
然后我新建了一个监听“广告奖励事件”的触发器:
TapTap
之前写在上上图红框中的语句都移到了这个触发器里
这样,我们就通过发送自定义事件,把协程从主线程中分离了出来。
总结一下:发送自定义事件,然后用触发器监听这个事件,就可以从主线程中分离出相应的协程。
你学费了吗?
新版的背包存档截图
新版的背包存档
舍弃老版超长代码逻辑还不好用的背包存档。想多少个格子就多少个格子不用一个格子创建一个变量,不用写一堆繁琐重复的代码。适用性更强,支持恢复到指定格子,多背包恢复 主要实现核心围绕云变量表这个类型变量来进行处理、获取用户背包栏,循环背包栏获取指定背包栏的物品存入云变量表,然后提交。 读取的话反之也是获取的云变量赋值给云变量表,循环读取背包栏并且获取格子,在将物品放入指定格子 最后附上demo地址 h
36 赞
5 回复
无须申请,星火编辑器现已公测开放下载截图
无须申请,星火编辑器现已公测开放下载
—————————————————— 各位关注星火编辑器的小伙伴: 感谢大家一直以来对编辑器支持! 破晓已去,曙光降临! 星火编辑器现已开启公测! · 关于下载和资格申请 现已无需申请,请去下面的官方首页直接下载! 缘起测试是星火编辑器自诞生以来第一次对外测试! 从2022年八月开始到十一月,历时三个月。 缘起之后缘聚测试,历时又七个月! 缘聚之后,破晓降临,历时又十二个月! 曾经微弱的星火现已渐
官方
329 赞
375 回复
04:10
自定义飘字教程截图
自定义飘字教程
之前编辑器更新的飘字,可能有不少同学还不会使用,所以我稍微写了下这篇教程,希望对大家有所帮助,更好的制作游戏
14 赞
1 回复
02:24
2022 TapTap 游戏发布会|星火编辑器截图
2022 TapTap 游戏发布会|星火编辑器
官方
88 赞
25 回复
9月星火编辑器社区教程汇总&答疑结算&贡献度公示
星火编辑器『生态贡献度』是面向广大星火编辑器开发者的一种特别积分。贡献度可以 1比1 提现成现金,也可以 1比2 抵扣服务器成本。此外,对于有游戏上线的开发者,历史累计获得的贡献度越多,可以获得越多的免审次数。 更多细节详见:生态贡献度 | 星火编辑器文档- 全部教程可以前往汇总文档中查看【腾讯文档】星火编辑器生态贡献度-星火编辑器投稿案例公示墙 诗雨 + 1500贡献度 「自制卡牌游戏DIY」制
官方
17 赞
2 回复