2017-04-01 16 views
2

私はクラス名(Player.swift)を持っています。私の(Scene.swift)クラスで、私はこのようなオブジェクトを宣言しました。カスタムタイプのChildNodeがSwift PlaygroundでNilを返しています

var player: Player? 

その後、私のinitializeGame機能では、私は

このような
private func initializeGame() { 

    player = childNode(withName: "Player") as? Player!; 
    //print NIL 
    print(player?.name); 
    // initializePlayer()is declared in Player.swift 
    player?.initializePlayer(); 
    print(player?.name); 
    //Print NIL 
    scoreLabel = childNode(withName: "ScoreLabel") as? SKLabelNode!; 
    scoreLabel?.text = "0"; 
} 

をやっている私はXcodeで、私のiOSプロジェクトを作って、その作業罰金、それから私は遊び場プロジェクトを作成し、すべてのXcodeのファイルをインポートしますこのプロジェクトでは、プレイヤーが正しく機能していないことを除いて、私のプレイグラウンドが正常に動作しています。問題は、Playerノードを.sksファイルのカスタムクラスに関連付けることです。私のXcodeプロジェクトの名前は "ゲームプレイ"なので、私はカスタムクラスのモジュールとプレーヤーでゲームプレイを書いて、問題を引き起こしているプレイスグラウンドと同じsksファイルを使って、私の遊び場プロジェクトの名前は "MyPlayground"なので、モジュール名プロジェクト名と同じにする必要があります。したがって、モジュールフィールドをMyplaygroundに編集しても、まだ動作しません。それで、それを正しく変更する方法を私に教えてください。

答えて

0

あなた(.sksを)1-を開き

プレイヤーノード2は、[ファイル]を選択します。

3 - [カスタムクラスインスペクタを表示]を選択します。

4 - MyPlaygroundではなく "MyPlayground_Sources"を書き込みます。

0

メソッドchildNode(withName:)は、ノード階層に追加されたの子ノードがであることを返します。その名前のノードが見つからない場合は、nilを返します。

"Player"という名前のノードを追加するコードがありますか?それはタイプPlayerのノードですか?それは呼ばれていますか?

+0

編集を確認してください。問題は、Playerノードを.sksファイルのカスタムクラスに関連付けることです。 –

+1

Swift(およびその目的のObjective C)は大文字と小文字を区別しますので、モジュール名が.swiftファイルで使用しているインポートと正確に一致するようにしてください。 –

+1

以前は.sksファイルで遊んでいませんでしたが、問題を再現するための簡単なデモをまとめることができるかどうか確認してください。 –

関連する問題