PlayCanvas Editorで開発をしている際のスクリプトの実行順序についてinitializeとpostInitializeの実行順序についてまとめました。
ヒエラルキー内の各エンティティにinitializeが呼び出された際にエンティティ名を出力するスクリプトを追加します。
var Script1 = pc.createScript('script1');
Script1.prototype.initialize = function () {
console.log(this.entity.name);
};
var Script2 = pc.createScript('script2');
Script2.prototype.initialize = function () {
console.log(`${this.entity.name} - 2`);
};
コンソールに出力をするとこのようになります。このようにエディタを利用してスクリプトを設定している場合の読み込み順序はヒエラルキーの上から読みこまれます。また、スクリプトも並び順の通りで呼び出されます。
エンティティの子エンティティを追加した場合
先程のシーンのBoxエンティティの子要素としてCapsuleを追加しました。
子のエンティティにも同様にスクリプトを追加します。
実行結果はこちらです。この場合もヒエラルキーの上から実行され、スクリプトの順序で実行されることは変わりませんが、親エンティティ → 子エンティティの順でスクリプトが実行されます。
postInitializeについて
postInitializeが実行された際にコンソールに出力をするスクリプトを追加します。
スクリプトはこちらです。
var Script3 = pc.createScript('script3');
Script3.prototype.postInitialize = function () {
console.log(`${this.entity.name} - 3`);
};
実行結果はこちらです。すべてのinitializeが呼び出された後にヒエラルキーの上からpostInitializeが呼び出されます。