有没有办法在 .sks 文件中布局我的整个关卡,但只加载当前视图中的内容?
Posted
技术标签:
【中文标题】有没有办法在 .sks 文件中布局我的整个关卡,但只加载当前视图中的内容?【英文标题】:Is there a way to layout my entire level in an .sks file, but only load whats currently in view? 【发布时间】:2017-08-30 13:17:37 【问题描述】:我在互联网上看到过这个概念,但找不到任何关于如何做到这一点的细节。
我想在一个 .sks 文件中布置我的整个关卡,但在任何给定时刻只加载播放器/帧视图中的内容。在我的游戏中,我有永远上下起伏的平台,简单的游荡敌人,以及在空中漂浮并上下摆动的可收集硬币。由于这些操作正在使用
SKAction.repeatForever
即使不在玩家的视线范围内,它们也会继续前进。我看到的唯一其他选择是给每个动作一个“键”,然后将不可见的精灵放置在接触时开始和停止某些动作的关卡中。虽然可行,但它似乎很快就会变得非常复杂。
有没有更直接的方式来布置我的整个场景,但只加载当前可见的内容?我不确定如何称呼这个概念,这可能是我找不到太多关于它的原因。
感谢任何见解!
【问题讨论】:
【参考方案1】:没有简单的方法可以做到这一点。我个人的方法是将您的 SKS 加载到根本不附加到根节点的SKScene
中(SKView
)并使用SKCameraNode
的containedNodeSet
将所有节点从加载的场景移动到用户可以看到的场景。然后,您需要实现在两个场景之间不断切换的方法。
如果您只关心操作,那么您可以避免交换并暂停所有不在containedNodeSet
中的节点,并让其中的节点感到不安。
【讨论】:
谢谢你!我会研究一下 containsNodeSet。 您是否愿意解释您所说的第二部分,关于取消暂停仅在视图中的操作? 启动所有节点,将 isPaused 设置为 true,然后遍历 containsNodeSet 将 isPaused 设置为 false。当某个节点不再在您的节点集中时,将该节点设置回 true。以上是关于有没有办法在 .sks 文件中布局我的整个关卡,但只加载当前视图中的内容?的主要内容,如果未能解决你的问题,请参考以下文章