💻 Unity:C#スクリプトの基本構造

Uncategorized

Unityのスクリプトは、基本的にMonoBehaviourというクラスを継承して作成されます。これにより、Unityのゲームオブジェクトにアタッチして、その動きを制御できるようになります。

📄 スクリプトのひな形

新しいC#スクリプトを作成すると、デフォルトで以下のコードが生成されます。(例:PlayerController.cs

C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour
{
    //  ゲーム開始時に一度だけ実行される
    void Start()
    {
        
    }

    // 毎フレーム(約0.016秒ごと)実行される
    void Update()
    {
        
    }
}

🔑 重要な3つの要素

要素説明役割
using UnityEngine;Unityの機能(コンポーネント、関数など)を使うために必要なおまじない。Unity機能の利用
public class PlayerController : MonoBehaviourスクリプトの本体。PlayerControllerスクリプト名であり、ファイル名と一致させる必要があります。MonoBehaviourを継承することで、Unityの機能が使えるようになります。スクリプトの定義
Start()Update()Unityの基本的な処理の流れを定義する関数(メソッド)です。処理の実行タイミング

🏃 オブジェクトを動かす基本コード

最もよく使うUpdate()関数を使って、ゲームオブジェクトを動かす具体的な例を見てみましょう。

🚀 スクリプトの作成とアタッチ

  1. Projectビューで右クリックし、「Create」 > 「C# Script」を選択し、名前を「Mover」とします。
  2. Mover.csHierarchyビューCubeなどのゲームオブジェクトにドラッグ&ドロップしてアタッチします。

📐 コード例:オブジェクトを常に前進させる

Mover.csをダブルクリックして開き、以下のコードを追加します。

C#

public class Mover : MonoBehaviour
{
    // Inspectorから設定できるようにする速度の変数
    public float speed = 5.0f; 

    void Update()
    {
        // 毎フレーム、オブジェクトをZ軸(前方)に移動させる
        // Time.deltaTimeをかけることで、フレームレートに依存せず滑らかに動く
        transform.Translate(Vector3.forward * speed * Time.deltaTime);
    }
}

💡 コードの解説

  1. public float speed = 5.0f;
    • publicを付けると、この変数がUnityのInspectorビューに表示され、コードを書き換えずに速度を簡単に調整できるようになります。
    • floatは少数を扱うためのです。
  2. transform
    • このスクリプトがアタッチされているゲームオブジェクト自身の位置、回転、大きさ(Transformコンポーネント)を指します。
  3. transform.Translate(...)
    • オブジェクトを移動させるための関数です。引数に移動量を渡します。
  4. Vector3.forward
    • Unityで「Z軸の正の方向(前方)」を意味するショートカットです。((0, 0, 1)と同じ)
  5. Time.deltaTime
    • 前のフレームからの経過時間(秒)を返します。これを移動量にかけることで、PCの性能やフレームレートに関係なく、常に一定の速さで移動できるようになります。これはUnity開発における重要テクニックです。

🔄 Inspectorでの調整

スクリプトを保存してUnityエディタに戻り、Cubeオブジェクトを選択してください。Inspectorビューの一番下に、アタッチしたMover (Script)コンポーネントと、設定したSpeedの値が表示されているはずです。ここで速度を自由に変更できます。

コメント