私の実際のコードを紹介します。次の 3 つの要素があります。
import SpriteKit
import GameplayKit
class GameSceneHelper: SKScene {
override func didMove(to view: SKView) {
}
}
一部のゲームの状態を持つヘルパーのサブクラス:
import SpriteKit
import GameplayKit
class GameScene: GameSceneHelper {
lazy var gameState:GKStateMachine = GKStateMachine(states: [
Introduction(scene: self),
SecondState(scene: self) ])
override func didMove(to view: SKView) {
self.gameState.enter(Introduction.self)
}
}
そしてアメリカ。ここでは、そのうちの 1 つを紹介します。もう 1 つは同じ構造です。
import SpriteKit
import GameplayKit
class Introduction: GKState {
weak var scene:GameScene?
init(scene:SKScene) {
self.scene = scene as? GameScene
super.init()
}
override func didEnter(from previousState: GKState?) {
print("INSIDE THE Introduction STATE")
}
}
問題は、GameSceneHelper のサブクラス内で gameState 変数を定義すると、リークが発生することです。しかし、サブクラスを使用せず、代わりに GameScene を SKScene の直接のサブクラスにすると、すべてが機能します。問題は、私のプロジェクトではヘルパーが必要なため、方程式から外すことができないことです。誰か提案はありますか?