4

これにアプローチする正しい方法について少し混乱しています:

私のゲームでは、プレイヤーが 5 つのエリアから選択してプレイできるようにしています。領域は、画面上の四角形にすぎず、その領域に完了率が表示されます。リスト全体が中央に配置され、見栄えがよくなります。

..最終的にはさらに多くの領域がありますが、複数の行に配置したくありません (プレイヤーがスワイプしてスクロールできるようにしたい)。

これまでのところ、私のゲームのすべての機能は SpriteKit を使用したコーンでした (ビュー コントローラーは 1 つしかなく、すべての SKScene を表示する以外には使用しません)。

上記の目的の機能を実現するには、UICollectionView を使用してビュー コントローラーを導入する必要がありますか?

一貫性を保ち、SKView 関連のコードのみを使用したいのですが、基本的にスワイプ/スクロールを可能にすることで UICollectionView を再作成しますか? SpriteKitでこれを行う方法を誰かが推奨できますか?それとも、これは一般的に悪い考えだと思いますか?

本当にありがとう!

4

2 に答える 2

3

純粋に SpriteKit でこれを行うには、基本的に moveableNode を作成し、すべてのメニュー項目をそのノードに追加してから、そのノードを touchesMoved で移動します。その位置を追跡し、速度などをいじる必要があります。

https://codedump.io/share/etvt4SwQI6iR/1/how-to-create-a-vertical-scrolling-menu-in-spritekit

このようなメニューは、UIScrollViews や UICollectionViews など、実際には SpriteKit で UIKit を使用した方が良いという稀なケースだと思います。

SpriteKit でそれらを複製しようとするのは少しトリッキーで、追加のコードが必要であり、スクロール/バウンス効果も得られません。

それが探しているものである場合は、Spritekit で UIColletionView を作成できます。サブクラス化するだけで済みます。レベル選択画面として取り組んでいるゲームの 1 つを使用しています。

新しい迅速なファイルを作成する

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()

これはあなたが求めているものですか?

于 2016-02-22T12:49:42.593 に答える
3

SpriteKit コードでこれを行う場合は、SKNode を作成し、すべてのコンテンツをこの SKNode 内に配置し、すべてを表示する視覚空間がある場合に予想されるようにすべてをレイアウトし、移動するだけです。意図した方向に基づくノードの位置。(あなたの場合、SKNodesのx位置を移動したい)

次に、スワイプ ジェスチャを使用してスワイプをキャプチャし、スクロールを実行する方法を処理する小さなコードを記述します。私はどのようUICollectionViewにのスクロールに慣れていないので、同じように感じさせる方法について答えることはできません.

于 2016-02-23T16:30:09.467 に答える