インスペクターのフィールド
CoddyのUnityジャーニー「Unityスクリプティングの基礎」セクションの一部。レッスン 7/67。
スクリプトの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でオブジェクトを選択すると、そのフィールドを確認できます。
チャレンジ
簡単エレベーターの Inspector では lift が 6 に設定されていますが、スクリプトはこのフィールドを無視し、常に毎秒 2 単位上昇します。Inspector の設定にかかわらず、エレベーターが毎秒 lift 単位上昇するように Update() を変更してください。
Hierarchy で Elevator を選択して lift を確認し、Play をクリックしてから Check をクリックしてください。
自分で試してみよう
using UnityEngine;
public class Elevator : MonoBehaviour
{
public float lift = 2f;
void Update()
{
transform.position += new Vector3(0, 2 * Time.deltaTime, 0);
}
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。