私はこれを少し違って扱います。
私はその後、レベル1として別に私のレベルファイルを作成し、私のGameScene.swiftとGameScene.sksファイルに
を(すなわち。gameHUD、プレーヤー、得点、一時停止...など)すべてのコアゲームエンジンのものを置きます.sks、Level2.sksなどですが、これらはクラスタイプのレベルになります。このようにして、各Level.sksファイルのすべてのレベルで一般的な一般的なものを繰り返し続ける必要はありません。 その後、GameSceneファイルを読み込んで、すべてのレベルに共通するオブジェクトを処理します。
私は自分のレベルを読み込みます。このように、LevelsとGameScene用に別々のsksファイルを作成するときは、オブジェクトをロードするときにレベルファイルからGameSceneにオブジェクトを移動する必要があることに注意することが重要です。 FUNCのcreateLevel(levelID:INT){
if let levelNode = SKReferenceNode(fileNamed: "Level\(levelID)") {
if let background = levelNode.childNode(withName: "backgroundTiles") as? SKTileMapNode {
background.move(toParent: self)
}
if let water = levelNode.childNode(withName: "waterTiles") as? SKTileMapNode {
water.move(toParent: self)
}
if let badGuy = levelNode.childNode(withName: "badGuy") as? SKSpriteNode {
self.badGuy = badGuy
badGuy.move(toParent: self)
}
}
}
編集新しい説明
あなたはパックマンのゲームを作成する想像してみてください。
どのレベルに共通するものを見つけます。この場合... - パックマン - スコアラベル - スコア集計 - ゴースト運動 - パックマンの動き - フルーツの動き
各レベル にユニークなものを次の図アウト - ゴースト開始位置 - 迷路 - フルーツの開始位置
だからあなたGameScene.sksファイルのレイアウトであなたのスコアラベルとあなたのGameScene.swiftファイルでは、すべてのレベル
に起こるすべてのGUIは、いずれかの設定を扱いますあなたのsksファイルにレイアウトしたGUI。
個々のSKSファイルレベル1、レベル2などで迷路を作成することができます。これにより、各迷路を図形的にレイアウトすることができますレベルごとにゴースト開始地点を配置したり、レベルごとに果物開始地点を配置したりすることもできます。
GameSceneの内部では、プレイレベルがどのレベルにあるかに基づいてlevel.sksファイルを読み込みます。 sksファイルを読み込むと、level.sksファイルから読み込まれた情報に基づいて、ゴースト、レベルの物理、果物などを配置します。
これで、すべてのコア機能を処理し、何も複製されず、すべてのレベル固有の情報がLevel.sksファイルに保存されている素晴らしいストリームのGameSceneファイルが作成されました。
このように関数に追加することはできますか?たとえば、一般的なdidBeginはすべてのレベルに渡されます。レベル2の場合、新しい連絡先パラメータを追加する必要がありましたが、古い連絡先パラメータはすべて保持する必要がありましたか? – genericguy25
@ genericguy25機能を編集する必要がある場合は、OriginalGameSceneの任意の機能を上書きできますが、新しいパラメータを追加するには、まったく新しい機能を作成する必要があります。 –
ああ、ありがとう、ありがとう。これは最も簡単な解決策のようです! – genericguy25