![]()
如果我有一个对象,我从SKScene更新方法和touchesBegan方法(在这种情况下是SKSpriteNode)更新,我是否要担心同步对我的对象的两次访问?
解决方法 所以几天后没有回答我设置了一些实验.顺便说一句,这些测试是在模拟器上运行而不是在实际设备上运行,但我认为它们是相同的.首先测试,我在touchesBegan的调试器中设置了一个断点,并查看了堆栈跟踪.似乎touchesBegan是从第一个线程和主循环调用的 – 与逻辑的其余部分相同,所以这对于单线程方法看起来很好.
第二次测试,我覆盖了上面高级场景处理链接中提到的场景中的各种方法,并添加了print语句来显示每个被调用函数的名称.然后我在touchesBegan方法中添加了一个print语句.
在运行应用程序时,输出为:
updatedIDEvaluateActionsdIDSimulatePhysicsdIDApplyConstraintsdIDFinishUpdatetouchesBegan in sceneupdatedIDEvaluateActionsdIDSimulatePhysicsdIDApplyConstraintsdIDFinishUpdateupdate
每当我点击时,这个模式就会重复出现.
除了在dIDFinishUpdate(即一个周期的结束)和更新(下一个周期的开始)之间调用touchesBegan之外,没有任何点击给了我任何东西.
结论:在调用update方法之前,在主循环中进行触摸处理.因此,没有必要在两种方法之间同步资源.
总结以上是内存溢出为你收集整理的ios – 在SpriteKit中,touchesBegan在与SKScene更新方法相同的线程中运行吗?全部内容,希望文章能够帮你解决ios – 在SpriteKit中,touchesBegan在与SKScene更新方法相同的线程中运行吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)