如何在 SpriteKit 中制作水平滚动字符选择器

Posted

技术标签:

【中文标题】如何在 SpriteKit 中制作水平滚动字符选择器【英文标题】:How to make a horizontal scrolling character chooser in SpriteKit 【发布时间】:2021-05-26 22:47:43 【问题描述】:

我一直在网上寻找最好的方法来做到这一点,但我无法弄清楚。我正在尝试制作一个像此示例 here 中的水平滚动字符选择器,仅从图片很难分辨,但您可以左右拖动手指,它会滚动到其他字符。

我只需要添加每个字符的图像,如果不是太难,那么可能是一个带有字符名称的标签,以及某种类型的触摸手势识别器以在您点击时选择一个字符就可以了。

最初我正在考虑使用带有水平堆栈视图的滚动视图,该视图将 UIView 从左到右堆叠。每个 UIView 内部都有字符图像,其名称在其下方的标签上。但我也想知道用集合视图是否会更容易?

我似乎无法弄清楚如何将视图添加到侧滚动滚动视图并让点击手势识别它,如果有人对我将如何做到这一点有任何意见,那就太棒了!

另外使用集合视图或堆栈视图会更好吗?或者甚至是我不知道的使用 SpriteKit 的另一种方式?基本上,任何能将我指向正确方向的输入都会很棒。非常感谢!

【问题讨论】:

如果您使用 Sprite Kit 开发游戏,最好远离 UIKit 之类的东西,例如 UIScrollViewUICollectionView。我什至不会使用Timer 感谢您的回复,但对我来说最好的方法是什么,然后只使用 SpriteKit?除了 UIKit 的东西,我似乎在网上找不到任何东西。 【参考方案1】:

你应该避免在 SpriteKit 中使用 UIKit 类,因为它只是一个不同的野兽。此外,SpriteKit 使用自己的游戏时间,因此您不希望依赖其他时间,例如,如果您的游戏因任何原因暂停。

我通常会构建自己的组件,这也是我应对这一挑战的方式。您应该创建一个自定义的 SKNode 子类,比如说 Picker,您将其实例嵌入到 SKScene 中。在该组件中,您将独立于 SKScene 处理触摸,并以本机方式进行轻敲、拖放操作。 SKAction 动画将有助于在放置后将正确的“页面”选择捕捉到位。

因此,每当组件检测到点击或滑动选择(拖放结束)时,它都会向您的数据或 SKScene 父级发送信号,告知应该更新选择。

我确信周围可能有第三方组件,但如果您打算坚持使用 SpriteKit,我会花时间进行此类开发。您通常需要深入了解事物的杂草,但这是乐趣的一部分:)。

如果需要,我很乐意提供进一步的帮助。

【讨论】:

以上是关于如何在 SpriteKit 中制作水平滚动字符选择器的主要内容,如果未能解决你的问题,请参考以下文章

SpriteKit 中的水平滚动(与视图控制器相比)

如何在 iOS SpriteKit 中添加滚动背景效果。

如何在颤动中制作水平滚动动画

如何在 iOS 中制作单行水平滚动 TextView

如何使用自动滚动制作水平滚动文本视图?

如何使用 SpriteKit 使球仅垂直弹跳而不是水平弹跳?