インスペクターのフィールド
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でオブジェクトを選択すると、そのフィールドを確認できます。
チャレンジ
簡単エレベーターが、インスペクターで設定した速度で上昇するようにします。
Update()内の2をフィールドのlift * Time.deltaTimeに置き換えます。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プレイグラウンド