Unity

Unityコンポーネント

しんしん

Unityにおいて、機能の大部分はコンポーネントによって実現されています。
コンポーネントは二種類があります。

  • ゲームエンジン内部のコンポーネントスクリプト
  • 自作のコンポーネントスクリプト

ゲームエンジン内部のコンポーネント

私たちが作成する 3D オブジェクトには、Transform コンポーネントだけが標準で付いており、それ以外のコンポーネントは必要に応じて追加されます。

たとえば、Cube を作成する場合と、空の GameObject を作成して以下のコンポーネントを追加した場合、見た目や動作は同じになります:

  • Mesh Filter(メッシュに「Cube」を指定)
  • Mesh Renderer(デフォルトマテリアルを使用)
  • Box Collider

コンポーネントを追加した後の状態:

自作のコンポーネントスクリプト

ゲームエンジン内のコンポーネントスクリプトに加え、自作のスクリプトも利用可能です。

Project ウィンドウ → Create → C# Script を選択し、MonoBehaviour を継承したスクリプトを作成します。

作成直後のスクリプトは「NewBehaviourScript」などの名前がついていますが、
クリックして名前を変更できます。(ここでは move に変更しました)

スクリプトを追加するには:
Inspector → Add Component → スクリプト名(例:move)を入力して検索 → 選択

スクリプトをダブルクリックすると、Visual Studio(または設定されたエディタ)で開きます。

Unity は、よく使われる以下のメソッドを自動的に用意してくれます:

private void Awake() 
{
    // スクリプトインスタンスが読み込まれたときに呼び出されます
    Debug.Log("Awake が呼び出されました");
}

private void OnEnable()
{
    // スクリプトが有効になったときに呼び出されます
    Debug.Log("OnEnable が呼び出されました");
}

// MonoBehaviour が作成された後、最初の Update の前に一度だけ呼び出されます
void Start()
{
    Debug.Log("最初のスクリプト");
}

// Update は毎フレーム呼び出されます
void Update()
{
    Debug.Log("Update が呼び出されました");
}

private void lateUpdate()
{
    // すべての Update メソッドの後に呼び出されます
    Debug.Log("LateUpdate が呼び出されました");
}

private void OnDisable()
{
    // スクリプトが無効になったときに呼び出されます
    Debug.Log("OnDisable が呼び出されました");
}

private void OnDestroy()
{
    // スクリプトが破棄されるときに呼び出されます
    Debug.Log("OnDestroy が呼び出されました");
}

スクリプトの実行順について

複数のスクリプトを同じオブジェクトまたは複数のオブジェクトに追加した場合、Unity は以下の順序でメソッドを実行します:

すべての Awake() → すべての Start() → すべての Update() …

実行順を変更したい場合は:

  • Edit → Project Settings → Script Execution Order を開き、右下の + ボタンから対象のスクリプトを追加し、順序を調整できます。
  • または、任意のスクリプトを選択 → Inspector → Script Execution Order をクリックしても設定画面を開けます。
ABOUT ME
自己紹介
自己紹介
職業:Web開発エンジニア
こんにちは!
このブログでは、ITのお仕事で学んだ知識や、 日本での生活で学んだ知識を紹介しています。
お役に立てればうれしいです 😊
記事URLをコピーしました