2017-01-11 4 views
1

実際のコードを表示します。ヘルパー::サブクラスでGKStateMachineを使用したリーク

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

そしてアメリカこれは3つの要素があります。ここで私はそれらの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の直接サブクラスにすると、すべてが機能します。問題は私のプロジェクトではヘルパーが必要なので、私はそれを式から取り除くことができないということです。 誰か提案はありますか?

答えて

1

これをやるのに多くの時間を経た後、私は問題の原因を見つけました。

class GameSceneHelper: SKScene { 

    var gameState:GKStateMachine! 

    override func didMove(to view: SKView) { 
    } 
} 

GameScene内部怠惰VAR宣言なし使用:gameStateの宣言は次のように GameSceneHelperGameSceneから移動しなければなりません。それからすべてが動く。

関連する問題