加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ios – 在Sprite Kit中暂停某些操作

发布时间:2020-12-14 19:40:31 所属栏目:百科 来源:网络整理
导读:我最近开始开发我的第一个iPhone应用程序,它将是一个2D游戏. 到目前为止,一切进展顺利,项目已包含超过一千行代码. 但是,我刚刚陷入了一个小问题.与许多游戏一样,需要暂停它.我的第一个尝试就是在代码中使用它,暂停必须发生. self.view.paused = true; 工作正
我最近开始开发我的第一个iPhone应用程序,它将是一个2D游戏.
到目前为止,一切进展顺利,项目已包含超过一千行代码.

但是,我刚刚陷入了一个小问题.与许多游戏一样,需要暂停它.我的第一个尝试就是在代码中使用它,暂停必须发生.

self.view.paused = true;

工作正常,直到我需要一些动画发生后,有人按下暂停按钮.想象一下,一个新的精灵节点从屏幕底部向上滑动,其中包含有关当前分数的一些细节,等等.当然,使用上面的代码将停止所有动画.

我的新想法是简单地停止必须单独停止的所有节点.我通过使用这段代码得到了它.

[self enumerateChildNodesWithName:@"name" usingBlock:^(SKNode* node,BOOL* stop) {
            node.paused = true;
            node.speed = 0.0;
}];

尝试了几次,当我遇到另一个问题时,我终于找到了解决方案.需要停止的一些游戏精灵节点在一定时间后定期创建.以下代码负责此行为.

SKAction* createPeriodically = [SKAction repeatActionForever:[SKAction sequence:@[[SKAction performSelector:@selector(create) onTarget:self],[SKAction waitForDuration:15.0]]]];
[self runAction:createPeriodically];

正如您所看到的,我正在使用waitForDuration在创建精灵节点之间有一个延迟.现在,当我暂停所有节点时,时间仍然继续,因此waitForDuration在设定的时间量之后完成,并且正在创建精灵节点,尽管所有其他节点都已暂停且未移动.

我希望你们能够理解我的问题.我正在寻找一种暂停机制来定期创建精灵节点的方法,同时仍能够在之后创建新的精灵节点并对新节点执行操作.任何帮助表示赞赏.谢谢.

解决方法

如果在节点上设置了暂停,则会暂停节点及其子节点的所有操作.因此,您可以通过设置场景的暂停属性来暂停整个场景上的所有操作(包括createPeriodically),但之后您将返回与暂停视图相同的场景.

但是您可以利用节点及其子节点来组织场景.不是让构成游戏的所有节点都是场景的直接子节点,而是创建一个单独的节点来包含它们.而不是在场景中全局运行影响游戏内容的操作(如createPeriodically),在这个单独的节点上运行它们.现在,当您想要暂停游戏时,在此节点上设置暂停 – 所有游戏内容操作都将暂停,但仍有空间在场景本身上运行操作或添加其他非暂停节点作为场景的直接子节点.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读