2017-11-29 9 views
2

一般的な精神病のために、Appleはupdate()コールをSKSceneに入れましたが、更新の呼び出しをSKSpriteNodeに置いていたのを忘れていました。SKSpriteの場合、実際にはcustomActionはUpdate呼び出しですか?

は今、限りすべての私達のテストはちょうどスプライトの「のCustomAction」を使用してSpriteKitベースで、

を決定することができるよう場面でupdateで何かを実行するのとまったく同じのようです。

func teste() { 

    let a = SKAction.customAction(withDuration: 5.0) { [weak self] node, elapsedTime in 

     print("Honest to goodness, this is the run loop. I think.") 
     print("\(self?.k) \(elapsedTime)") 
     self?.k += 1 
    } 
    run(a) 
} 

私はドキュメントを無駄にしてしまった。

本当に "customAction"が実際にすべてのフレームを実行するのは本当ですか?それは効果的かつ安全にUpdateコールですか?

(例:多分、彼らは「すべての1 /第60回」か何か、それを実行し、それは本当にシーンと同じ実行ループ上で動作していないという恐ろしい偶然の一致があるかもしれません。)

あるいは、どうやら以来それは本当にBox2Dです。誰かがBox2D環境からこのことを明らかにすることができますか?問題の


解像度:騎士に

おかげで、我々は今、「更新呼び出しとして」のCustomActionを使用して、更新呼び出しのようにほとんど同じであることを知っている:それは中に起こりますsecond実行ループのフェーズ。更新フェーズの直後です。

{更新フェーズで実際に実行したい場合は、SpriteKitの通常の回避策を使用する必要があります。ゲームオブジェクトで独自の更新関数を呼び出すだけです。 。}

+0

を参照してください更新サイクルの実行フェーズenter image description here

に起こります。 – Knight0fDragon

+0

"更新サイクルのアクションフェーズ中にカスタムアクションが呼び出される"優れた点 – Fattie

+0

( "スプライトは更新メソッドを必要としない"あなたのコメントは信じられないほど古いBeanです:) Unity言語では、すべてのゲームオブジェクトの "Update"コールがスクリプティングコンセプト全体の主な理由です!*タンク、弾丸、マリオなどをプログラムするには、Updateコールを書きます。 ){是非、アップルはあなたのために何かを時間をかけて実行する、彼らの面白い、そして素晴らしい "アクション"コンセプトを持っています。もちろん、シーンと同様に、実行ループにアクセスする必要があります。} – Fattie

答えて

2

すべてのアクションは、彼らは、スプライトが更新方法を必要としない、SKSpriteNodesに更新コールを置くことを忘れなかったhttps://developer.apple.com/documentation/spritekit/skscene

+0

素晴らしい情報。 TBCは、 "SKSceneは行動を評価する"というラベルの付いた "第2"項目を意味します。それで、すべてのSKActionがそこで実行されます。 – Fattie

+0

はい、その灰色の領域で何が起こっているのかを制御することはできませんが、そのすべてが裏目ですが、わかるように、前後に制御があります。 – Knight0fDragon

+1

ここでグーグルでグーグルクリアするだけです。** SKAction.customAction **に事実を追加します。実際には、青色の灰色で、「SKSceneはアクションを評価します」というラベルが付けられているそのチャートに表示されている「2番目の」セグメントで処理されます。 SKAction。** customAction **は特に​​「毎回」何かを実行するシステムであることを思い出してください。 (アップルの他のSKActionのコンセプトは、あなたのために何かを実行する、つまり特定の動きを時間の経過とともに行う "世話をする") – Fattie

関連する問題