Project ウィンドウでスクリプトアセットを選択すると、Inspector には、そのアセットが属するアセンブリの名前やコンテンツのプレビューなど、いくつかの基本情報が表示されます。
注意Inspector にはスクリプトのコンテンツが表示されますが、Inspector ウィンドウでコンテンツを編集することはできません。
スクリプト Inspector には、Open と Execution Order の 2 つのボタンも表示されます。
Open は、Project ウィンドウでスクリプトをダブルクリックして、現在設定されている外部スクリプトエディターでスクリプトを開くのと同じ機能を実行します。Unity がスクリプトを開くために使う外部エディターは、Preferences ウィンドウの外部ツールセクションで設定できます。
Execution Order ボタンを押すと、Project Settings ウィンドウの Script Execution Order セクションが開き、Unity がスクリプトを実行する順序を設定できます。
MonoBehaviour スクリプトはすべてコンポーネントとして使用できます。つまり、
以下のコード例では、myName という public フィールドを宣言しています。このスクリプトをシーンのゲームオブジェクトに追加すると、Inspector ウィンドウに My Name というラベルのフィールドが表示されます。スクリプトで宣言された none のデフォルト値が Inspector ウィンドウのデフォルト値になります。この値は、フィールドに入力して変更することができます。
using UnityEngine;
using System.Collections;
public class MainPlayer : MonoBehaviour
{
public string myName = "none";
// Use this for initialization
void Start ()
{
Debug.Log("I am alive and my name is " + myName);
}
}
スクリプトコンポーネントをアタッチする各ゲームオブジェクトは、フィールドに一意の値を持つことができます。
フィールド名は、フィールド名からラベルへの変換に記載されているルールに従って、Inspector ウィンドウのラベルに変換されます。ただし、これらの変更は単に表示上のものです。コードでは、常にフィールド名を使用する必要があります。
Inspector ウィンドウで、My Name の値を編集して Play を押すと、コンソールメッセージに入力したテキストが含まれるようになります。
すべての public フィールドは、デフォルトで Inspector ウィンドウで編集可能です。パブリック変数が Inspector ウィンドウに表示されないようにするには、HideInInspector 属性を追加します。Inspector ウィンドウで private フィールドを編集可能にするには、SerializeField 属性を追加します。
ノート: 再生モードで実行中に、エディターのスクリプトのフィールドの値を変更できます。これは停止、再起動をせずに変更の結果をすぐ確認できるので、非常に便利です。ただし、再生モードが終了すると、フィールドの値は再生モードに入る前の値にリセットされます。
bool、string、int などのシンプルなビルトイン C# 型だけでなく、UnityEngine.Object から継承した型のフィールドを Inspector ウィンドウで編集可能にすることもできます。これには、すべてのビルトインコンポーネントタイプ (Transform、AudioSource、Camera、Light など)、独自の MonoBehaviour スクリプトタイプ、および多くのアセットタイプが含まれます。
これにより、独自のスクリプトコンポーネントで Unity エディターのドラッグアンドドロップシステムを使用できます。例えば、スクリプトに public Transform フィールドを作成し、それをあるゲームオブジェクトに追加すると、別のゲームオブジェクトを Inspector ウィンドウのそのフィールドにドラッグして、そのゲームオブジェクトの Transform コンポーネントへのリファレンスを設定できます。このリファレンスには、スクリプトでランタイムにアクセスできます。
例えば、この Follow スクリプトは、あるゲームオブジェクトを別のゲームオブジェクトに追従させます。
using UnityEngine;
public class Follow : MonoBehaviour
{
public Transform objectToFollow;
public float followSpeed = 1;
void Update()
{
// calculate the distance between this object and the target object
// and move a small portion of that distance each frame:
var delta = objectToFollow.position - transform.position;
transform.position += delta * Time.deltaTime * followSpeed;
}
}
スクリプトには Transform 型の public フィールドがあります。これは、割り当て可能なフィールドとしてエディターに表示されます。別のゲームオブジェクトを Hierarchy ウィンドウからこのフィールドにドラッグアンドドロップすると、そのゲームオブジェクトにアタッチされている Transform コンポーネントへのリファレンスが、エディターによって割り当てられます。
以下のスクリーンショットでは、スクリプトはスフィアゲームオブジェクトに配置され、キューブは階層から Object To Follow フィールドにドラッグアンドドロップされています。
にドラッグアンドドロップされます。
MonoBehaviour スクリプトでエディターに割り当て可能な public オブジェクトフィールドを定義する場合は、これらのフィールドのデフォルト参照を設定できます。デフォルトのリファレンスフィールドは、Project ウィンドウでスクリプトアセットを選択すると、Inspector に表示されます。
上の例では、デフォルトの参照が割り当てられていない、3 つの public オーディオクリップフィールドがあります。各 AudioClip のデフォルトのリファレンスフィールドには、オーディオクリップを割り当てることができます。
デフォルトの参照を割り当てると、MonoBehaviour をゲームオブジェクトにコンポーネントとして追加したとき、またはゲームオブジェクト上の MonoBehaviour の既存のインスタンスをデフォルト値にリセットしたときに適用されます。
注意ゲームオブジェクトの MonoBehaviour インスタンスの参照とデフォルト参照の間には、継続的なリンクはありません。つまり、デフォルトの参照を変更しても、既存のゲームオブジェクトの参照は自動的に更新されません。
UnityEngine.Object から継承されていないその他のタイプの Inspector 編集可能フィールド (public の string や int フィールドなど) には、Inspector のデフォルトフィールドはありません。代わりに、スクリプト自体からデフォルト値が使用されます。
Unity は、一連のルールに従って、Inspector ウィンドウで C# フィールド名をラベルに変換します。例えば、上記の例の変数名は myName から My Name に、objectToFollow から Object To Follow に変換されています。変換のルールは以下のとおりです。
m_ プレフィックスを削除しますk プレフィックスを削除します_ プレフィックスを削除します
iPad や x64 など、これらのルールが適用されない特殊なケースもあります。