要纯粹在 SpriteKit 中执行此操作,您实际上创建了一个 moveableNode 并将所有菜单内容添加到该节点,然后在 touchesMoved 中移动该节点。您必须跟踪它的位置并调整速度等。
https://codedump.io/share/etvt4SwQI6iR/1/how-to-create-a-vertical-scrolling-menu-in-spritekit
我认为这种菜单是在 SpriteKit 中使用 UIKit 实际上更好的罕见场合,例如 UIScrollViews 或 UICollectionViews。
尝试在 SpriteKit 中复制它们有点棘手,需要一些额外的代码,而且不会给你很好的滚动/反弹效果。
如果您正在寻找什么,您可以在 Spritekit 中创建一个 UIColletionView,您只需要子类。我正在为我正在开发的游戏使用一个作为关卡选择屏幕。
创建一个新的快速文件
class CustomCollectionView: UICollectionView {
// MARK: - Init
init(frame: CGRect) {
super.init(frame: frame)
/// set up
backgroundColor = UIColor.clearColor()
#if os(iOS)
pagingEnabled = true
#endif
self.frame = frame
delegate = self
dataSource = self
indicatorStyle = .White
scrollEnabled = true
canCancelContentTouches = false
registerClass... // register your cells
}
// MARK: - Delegates
extension CustomCollectionView: UICollectionViewDataSource {
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return 5
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 8
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
.......
}
然后在您的 SKScenes 中,您可以添加集合视图
weak var collectionView: CustomCollectionView!
collectionView = CustomCollectionView(frame: view!.frame)
view!.addSubview(collectionView)
您必须阅读一些教程,以便熟悉 UICollectionView,例如如何创建自定义单元格和常规设置等。您还必须确保在更改 SKScenes 时删除 collectionView
collectionView.removeFromSuperview()
这是你要问的吗?