Menu
CoddyTech

インスペクターのフィールド

CoddyのUnityジャーニー「Unityスクリプトの基礎」セクションの一部。レッスン 14/85。

スクリプトのpublicフィールドは、スクリプト名の下にあるInspectorに表示されます。シーンを作成する人は誰でも、コードに触れずにその値を変更できます。これによって、同じSpinnerスクリプトでも、扇風機は速く、風車はゆっくり回せます。同じコードを使いながら、それぞれのオブジェクトに異なる数値を設定できます。

コード内の数値は、スクリプトを初めて追加したときにUnityが使う初期値にすぎません。その後は、シーンに保存された値が優先されます。ここではコードに3と書かれていますが、このロケットのInspectorには8と表示されているため、ロケットは毎秒8単位の速さで上昇します。

public float speed = 3f;   // このロケットのInspectorには8と表示される

void Update()
{
    transform.position += new Vector3(0, speed * Time.deltaTime, 0);
}

コード内の= 3fを変更しても、すでにシーンにあるロケットの値は変わりません。これはUnity初心者のほとんどが少なくとも一度はつまずく点です。数値が反映されていないように見えたら、Inspectorを確認しましょう。Hierarchyでオブジェクトを選択すると、そのフィールドを確認できます。

challenge icon

チャレンジ

簡単

エレベーターが、インスペクターで設定した速度で上昇するようにします。

  1. Update()内の2をフィールドのlift * Time.deltaTimeに置き換えます。
  2. public float lift = 2f;はそのままにします。インスペクターでliftを6に設定します。

「プレイ」を押すと、エレベーターは1秒あたり6ユニット上昇します。その後、「確認」を押します。

自分で試してみよう

using UnityEngine;

public class Elevator : MonoBehaviour
{
    public float lift = 2f;

    void Update()
    {
        transform.position += new Vector3(0, 2 * Time.deltaTime, 0);
    }
}

Unityスクリプトの基礎のすべてのレッスン

自分で練習してみよう: Unityプレイグラウンド