---
title: イベント機能
slug: world-sdk-guide-ja/YmiOl8ccijr3gn9X35wf3
docTags: 
createdAt: 2024-09-02T08:34:13.135Z
---

イベント関数は、UnityエンジンのGameObjectまたはコンポーネントのライフサイクル中に自動的に呼び出される特別な関数です。したがって、ライフサイクルイベント関数とも呼ばれます。

イベント関数は、特定のタイミングでUnityエンジンによって自動的に呼び出されます。

イベント関数は、UnityエンジンのGameObjectまたはコンポーネントのライフサイクル中に自動的に呼び出される特別な関数であり、したがってライフサイクルイベント関数とも呼ばれます。

![ZEPETOスクリプトライフサイクルフローチャート](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-W3Bs4OH3eIu7HCrvM8MgR-20240904-102409.png "ZEPETOスクリプトライフサイクルフローチャート")



## 初期化イベント

- 初期化イベントを使用して、更新の前に初期化コードを呼び出すことができます。
- Start関数は、物理更新の前と最初のフレームの前に呼び出され、Awake関数はシーンを呼び出すときにシーン内の各オブジェクトに対して呼び出されます。

- さまざまなオブジェクトのStartとAwake関数はランダムな順序で呼び出されますが、すべてのAwake呼び出しはStartが呼び出される前に完了します。

- これは、Start関数がAwake関数で以前に実行された他の初期化を使用できることを意味します。



## 定期更新イベント

- 定期更新は、毎フレーム呼び出されるすべての更新を指します。

- それらは、各フレームがレンダリングされる前に、オブジェクトの位置、状態、および動作を変更します。
- ZEPETOScriptは、Update関数内の計算処理のガイドラインを提供します。
  &#x20;


## 物理イベント

- 物理イベントは、GameObjectに追加されたスクリプトを通じてイベント関数を呼び出します。
- OnCollisionEnter、OnCollisionStay、およびOnCollisionExit関数は、接触が行われ、保持され、破られるときに呼び出されます。

- OnTriggerEnter、OnTriggerStay、およびOnTriggerExit関数は、オブジェクトコライダーがトリガーとして設定されているときに呼び出されます（つまり、衝突に物理的に反応せず、単にそれを検出するコライダー）。
- このような関数は、物理更新中に複数の接触が検出されると、連続して何度も呼び出されることがあり、そのため衝突の詳細（位置、オブジェクトの識別）を提供するパラメータが関数に送信されます。



## GUIイベント

- ZEPETOScriptは、GUIコントロールをレンダリングし、要素からのクリックに反応するイベントをサポートします。これらは通常のフレーム更新とは異なる動作をするため、UI関連のロジックはOnGUI関数に配置する必要があります。
  &#x20;


## マウスイベント

- ZEPETOScriptでは、マウス操作に応じるイベントがサポートされています。
- ただし、マウスイベントには、関連するGameObjectにColliderまたはCollider2Dが必要であり、そのColliderがマウスでクリックされたときのみトリガーされます。
- OnMouseDown()は、ユーザーがマウスボタンをクリックしたときに呼び出されます。
- OnMouseUp()は、ユーザーがマウスボタンを放したときに呼び出されます。
- OnMouseOver()は、マウスカーソルがGameObjectのColliderまたはCollider2Dの上にある間、毎フレーム呼び出されます。



## 終了イベント

- 終了イベントは、シーン内のすべてのアクティブなオブジェクトで呼び出されます。
- OnDisable関数は、指定されたオブジェクトが無効化または非アクティブになると呼び出され、OnApplicationQuitはアプリケーションが閉じる前にすべてのGameObjectで呼び出されます。

:::hint{type="info"}
**📘 Unityイベント関数**
[https://docs.unity3d.com/kr/current/Manual/EventFunctions.html](https://docs.unity3d.com/kr/current/Manual/EventFunctions.html)
:::



ZEPETOScriptによって本質的にサポートされているすべてのイベント関数は、以下のサンプルコードにリストされています。

:::CodeblockTabs
サンプル\_MonoBehaviourLifeCycle

```typescript
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { Collider, Collider2D, Collision, Collision2D } from 'UnityEngine';

export default class SampleMonoBehaviourLifeCycle extends ZepetoScriptBehaviour {

    Awake() {
        console.log('目覚め。');
    }
    OnEnable() {
        console.log('有効。');
    }
    Start() {
        console.log('開始。');
    }

    Update() {
        console.log('更新中。');
    }
    FixedUpdate() {
        console.log('固定更新。');
    }
    LateUpdate() {
        console.log('遅延更新。');
    }

    OnDisable() {
        console.log('無効。');
    }
    OnDestroy() {
        console.log('破壊。');
    }

    OnTriggerEnter(coll: Collider) {
        console.log(`トリガーに入る ${coll.gameObject.name}。`);
    }
    OnTriggerExit(coll: Collider) {
        console.log(`トリガーから出る ${coll.gameObject.name}。`);
    }
    OnTriggerStay(coll: Collider) {
        console.log(`トリガーに留まる ${coll.gameObject.name}。`);
    }

    OnTriggerEnter2D(coll: Collider2D) {
        console.log(`2Dトリガーに入る ${coll.gameObject.name}。`);
    }
    OnTriggerExit2D(coll: Collider2D) {
        console.log(`2Dトリガーから出る ${coll.gameObject.name}。`);
    }
    OnTriggerStay2D(coll: Collider2D) {
        console.log(`2Dトリガーに留まる ${coll.gameObject.name}。`);
    }

    OnCollisionEnter(coll: Collision) {
        console.log(`衝突に入る ${coll.gameObject.name}。`);
    }
    OnCollisionExit(coll: Collision) {
        console.log(`衝突から出る ${coll.gameObject.name}。`);
    }
    OnCollisionStay(coll: Collision) {
        console.log(`衝突に留まる ${coll.gameObject.name}。`);
    }

    OnCollisionEnter2D(coll: Collision2D) {
        console.log(`2D衝突に入る ${coll.gameObject.name}。`);
    }
    OnCollisionExit2D(coll: Collision2D) {
        console.log(`2D衝突から出る ${coll.gameObject.name}。`);
    }
    OnCollisionStay2D(coll: Collision2D) {
        console.log(`2D衝突に留まる ${coll.gameObject.name}。`);
    }

    OnGUI() {
        console.log('GUI。');
    }
    OnMouseDown() {
        console.log('マウスダウン。');
    }
    OnMouseDrag() {
        console.log('マウスドラッグ。');
    }
    OnMouseUp() {
        console.log('マウスアップ。');
    }
    OnMouseEnter() {
        console.log('マウスエンター。');
    }
    OnMouseExit() {
        console.log('マウスエグジット。');
    }
    OnMouseOver() {
        console.log('マウスオーバー。');
    }
    OnMouseUpAsButton() {
        console.log('ボタンとしてマウスアップ。');
    }

    OnAnimatorIK(layerIndex: number) {
        console.log(`アニメーターIK ${layerIndex}。`);
    }

    OnApplicationFocus() {
        console.log('アプリケーションフォーカス。');
    }
    OnApplicationPause() {
        console.log('アプリケーション一時停止。');
    }
    OnApplicationQuit() {
        console.log('アプリケーション終了。');
    }

}
```
:::



テストコードの出力画面を以下で確認してください。

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-X6PplO2PMFFJT3KU2IIWT-20240904-102409.png)

ZEPETOScriptが提供するUnityイベント関数については、以下のリンクをクリックして詳しく学ぶことができます。

:::hint{type="info"}
**📘 イベント関数の実行順序**
[https://docs.unity3d.com/kr/current/Manual/ExecutionOrder.html](https://docs.unity3d.com/kr/current/Manual/ExecutionOrder.html)
:::

