swift - 如何在 SpriteKit 中创建垂直可滚动区域(逐步)?
问题描述
语境
我正在开发一个SpriteKit游戏,我想添加一个可滚动的区域来显示某些项目。(例如,每个项目可以由图像和标签组成)。下面是一张图片,它准确地描述了我想要完成的事情:您选择“篮球图标”,然后可以滚动和选择潜在球的列表(图片后有更多详细信息)
考虑到这一点,我已经看到了几个实现该目标的建议,但大多数帖子都已过时,而且大多数时候还不够详细,无法有人执行。一些建议包括:
将 UIKit 元素,如 UIScrollView、UICollectionView 或 UITableView 嵌入到您的 SKScene中(在这种情况下,我想我上面提到的项目 - 图像和标签 - 而不是 Skpritekit 元素需要自定义单元格)
将 UIKit 元素(与上面相同)嵌入到位于 Scene 顶部的 SKNode 叠加层
使用 SKCameraNode 来“模拟”一个可滚动的行为,它只跟随触摸并沿着更大的场景移动(例如,帧大小的 2 倍 - 垂直)以这种方式显示其他 SpriteKit 元素
也就是说,我正在寻找基于以下内容的分步建议:
(a)自己的经验(例如提供代码片段作为答案和/或类似的 GitHub 示例)
(b)可用的公共教程(youtube / 文章)
(c)您认为合适的其他格式
最终,这篇文章和答案可以为所有其他寻找类似实现的人奠定良好的基础。
提前感谢您的时间和精力。干杯
解决方案
根据我作为游戏开发者的经验,我推荐使用SwiftySKScrollView。
SwiftySKScrollView 是一个帮助类,用于将 UIScrollView 添加到 SpriteKit 场景。助手将自动将按钮按下转发到相关的 SKScene 和节点子类。易于使用和实施。
另外,从经验来看,在这种游戏上使用 SKCamera 也不值得。尝试重现滚动区域及其所有效果将非常困难且耗时。最后,添加 UIScrollView 的辅助类 SwiftySKScrollView 看起来会更加流畅自然。
推荐阅读
- c# - 修改结构变量
- visual-foxpro - Windows 10 1803 的 VFP 网络问题
- reactjs - 如何将其孩子接受的仅限父母的道具传递给父母?
- javascript - 对于成功的同源请求,Fetch 会抛出“TypeError: Failed to fetch”
- c# - 为什么以及何时需要在异步函数中等待?
- vba - 日期清理功能
- java - 在java中打印以相同字母开头和结尾的字符串中的所有单词
- redux - React Redux 将 action 分发到另一个域进行身份验证
- c++ - 为不同的目标 MCU 开发 C/C++ 代码的区别
- openstack - openstack heat 无法识别 key_name 参数