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()関数を使って、ゲームオブジェクトを動かす具体的な例を見てみましょう。
🚀 スクリプトの作成とアタッチ
- Projectビューで右クリックし、「Create」 > 「C# Script」を選択し、名前を「
Mover」とします。 Mover.csをHierarchyビューの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);
}
}
💡 コードの解説
public float speed = 5.0f;publicを付けると、この変数がUnityのInspectorビューに表示され、コードを書き換えずに速度を簡単に調整できるようになります。floatは少数を扱うための型です。
transform- このスクリプトがアタッチされているゲームオブジェクト自身の位置、回転、大きさ(Transformコンポーネント)を指します。
transform.Translate(...)- オブジェクトを移動させるための関数です。引数に移動量を渡します。
Vector3.forward- Unityで「Z軸の正の方向(前方)」を意味するショートカットです。(
(0, 0, 1)と同じ)
- Unityで「Z軸の正の方向(前方)」を意味するショートカットです。(
Time.deltaTime- 前のフレームからの経過時間(秒)を返します。これを移動量にかけることで、PCの性能やフレームレートに関係なく、常に一定の速さで移動できるようになります。これはUnity開発における重要テクニックです。
🔄 Inspectorでの調整
スクリプトを保存してUnityエディタに戻り、Cubeオブジェクトを選択してください。Inspectorビューの一番下に、アタッチしたMover (Script)コンポーネントと、設定したSpeedの値が表示されているはずです。ここで速度を自由に変更できます。

コメント