Menu
CoddyTech

Inspectorでの参照

CoddyのUnityジャーニー「Unityスクリプティングの基礎」セクションの一部。レッスン 29/67。

フィールドには別のオブジェクトを格納できます。TransformやGameObjectなどの型を指定すると、Inspectorに空のスロットが表示されます。Hierarchyからオブジェクトをドラッグして、そのスロットにドロップします。このカメラスクリプトは、playerにドラッグされたオブジェクトを追従し、そのオブジェクトの3ユニット上、6ユニット後方に位置します。

public Transform player;

void Update()
{
    transform.position = player.position + new Vector3(0, 3, -6);
}

スロットが空のままだとNoneと表示され、それを使う最初の行で、毎フレーム次の例外が発生します。UnassignedReferenceException: The variable player of CameraFollow has not been assigned.メッセージの次の行には、対処方法が示されています。You probably need to assign the player variable of the CameraFollow script in the inspector.フィールド名とスクリプト名が示されているので、どのスロットに割り当てればよいかがわかります。

スロットが空でも動作するべきスクリプトもあります。Unityでは、空のスロットはnullと等しいと判定されるため、そのようなスクリプトでは使用前にチェックします。Update()内の行をif (player != null)で囲むと、プレイヤーが設定されていないカメラは例外を発生させず、その場にとどまります。

challenge icon

チャレンジ

中級

それぞれのガードは自分の持ち場まで歩きます。シーンでは、Guard1 の Inspector で、Post1 オブジェクトが post というフィールドに設定されています。Guard2 の持ち場はまだ作成されていないため、post スロットは空です。

  • Guard スクリプトに、post という名前の Transform フィールドを追加します。
  • ガードは、毎秒 speed 単位の速さで持ち場の位置まで歩き、持ち場が後から移動しても、その位置で停止します。
  • 持ち場のスロットが空のガードは、エラーを出さずにその場にとどまります。

Play を押し、Hierarchy で各ガードを選択して Post スロットを確認してから、Check を押します。

自分で試してみよう

using UnityEngine;

public class Guard : MonoBehaviour
{
    // post: この警備員が向かう Transform。Inspector で設定する
    public float speed = 2f;

    void Update()
    {
        // speed の速さで post に向かって歩く。post が未設定の警備員はその場にとどまる。
    }
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Unityスクリプティングの基礎のすべてのレッスン