gpt4 book ai didi

swift - SpriteKit 中的水平滚动(相对于 View Controller )

转载 作者:搜寻专家 更新时间:2023-10-31 08:22:56 25 4
gpt4 key购买 nike

我对处理这个问题的正确方法有点困惑:

在我的游戏中,我允许玩家从 5 个区域中进行选择。一个区域只不过是屏幕上的一个矩形,其中包含您在该区域的完成百分比。整个列表居中并且看起来不错。

..最终会有更多区域,但我不希望它们位于多行(我希望玩家滑动以滚动浏览它们)。

迄今为止,我游戏的所有功能都是使用 SpriteKit 实现的(我只有一个 View Controller ,除了在其中显示我的所有 SKScenes 外我不使用它)。

为了实现上述所需的功能,我现在是否需要引入一个带有 UICollectionView 的 View Controller ?

我宁愿保持一致,只使用与 SKView 相关的代码,但我是否会通过允许滑动/滚动来重新创建 UICollectionView?谁能推荐一种在 SpriteKit 中执行此操作的方法,或者您认为这通常是个坏主意?

非常感谢!

最佳答案

要纯粹在 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,您只需要子类化即可。我正在为我正在开发的游戏使用一个关卡选择屏幕。

新建一个swift文件

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 中您可以添加 Collection View

  weak var collectionView: CustomCollectionView!

collectionView = CustomCollectionView(frame: view!.frame)
view!.addSubview(collectionView)

您必须阅读一些教程,以便熟悉 UICollectionView,例如如何创建自定义单元格和常规设置等。您还必须确保在更改 SKScenes 时删除 collectionView

 collectionView.removeFromSuperview()

这是你要问的吗?

关于swift - SpriteKit 中的水平滚动(相对于 View Controller ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35539841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com