2017-07-30 7 views
0

私は弾丸クラスを作成しました。それにlocateInArrayという属性を保持します。 locatedInArrayは、弾丸がGameSceneクラス内に格納されている配列の参照を格納します。唯一の問題は、printステートメントを追加すると、ゲームシーンの実際の配列と比較すると、locatedInArrayの値が異なることが示されることです。値の代わりに参照で配列を渡すためにとにかくありますか?参照渡しで配列を渡す[Swift 3 Xcode 8]

配列は、関数呼び出しを介して弾丸インスタンスに渡されます。

bullet.shoot(from: self.mainCharacter, to: "right", fromPercentOfWidth: 0.5, fromPercentOfHeight: 0.65, addToArray: &playerBulletArray, inScene: self) 

配列は箇条書きオブジェクト内の属性として割り当てられます。

func shoot(from character: SKSpriteNode, to direction: String, fromPercentOfWidth xPercent: CGFloat, fromPercentOfHeight yPercent: CGFloat, addToArray array: inout[SKBulletsNode?], inScene scene: GameScene) { 

    self.gameScene = scene 
    self.locatedInArray = array 
} 
+0

なぜ配列は、それに守備を持っているかについての弾丸のケアをしますか?このような

Alexander

答えて

0

あなたがプロパティとしてSKBulletsNode配列を含むクラスを作成し、関数に、これらのオブジェクトの単一のものを渡してもらえますか?

class BulletArray { 
    var bullets : [SKBulletsNode]? 
} 

func shoot(from character: SKSpriteNode, to direction: String, fromPercentOfWidth xPercent: CGFloat, fromPercentOfHeight yPercent: CGFloat, addToArray array: inout BulletArray , inScene scene: GameScene) { 
    self.gameScene = scene 
    self.locatedInArray = array 
} 

詳細はこのリンクをチェックアウト: Swift: Pass array by reference?

+0

はい、locatedInArrayは実際には[SKBulletsNode?]タイプです。 –

+0

Swiftの配列と辞書は値渡しであるため、参照渡しするにはクラスにラップする必要があります。 –

+0

入手しやすいソリューションがあればより良いでしょうが、これはより良い方法がない場合に備えてうまくいくと思います。しかし、ありがとう。 –

関連する問題