0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PlayCanvasのエンティティ内のスクリプトの実行順序について

Last updated at Posted at 2022-07-05

PlayCanvas Editorで開発をしている際のスクリプトの実行順序についてinitializeとpostInitializeの実行順序についてまとめました。

スクリーンショット 2022-07-05 14.27.14.png

ヒエラルキー内の各エンティティに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`);
};

コンソールに出力をするとこのようになります。このようにエディタを利用してスクリプトを設定している場合の読み込み順序はヒエラルキーの上から読みこまれます。また、スクリプトも並び順の通りで呼び出されます。

スクリーンショット 2022-07-05 14.24.20.png

エンティティの子エンティティを追加した場合

先程のシーンのBoxエンティティの子要素としてCapsuleを追加しました。
子のエンティティにも同様にスクリプトを追加します。

スクリーンショット 2022-07-05 14.32.46.png

実行結果はこちらです。この場合もヒエラルキーの上から実行され、スクリプトの順序で実行されることは変わりませんが、親エンティティ → 子エンティティの順でスクリプトが実行されます。
スクリーンショット 2022-07-05 14.29.00.png

postInitializeについて

スクリーンショット 2022-07-05 14.34.57.png

postInitializeが実行された際にコンソールに出力をするスクリプトを追加します。
スクリプトはこちらです。

var Script3 = pc.createScript('script3');

Script3.prototype.postInitialize = function () {
    console.log(`${this.entity.name} - 3`);
};

実行結果はこちらです。すべてのinitializeが呼び出された後にヒエラルキーの上からpostInitializeが呼び出されます。
スクリーンショット 2022-07-05 14.36.12.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?