SceneAsset はエディターでシーンオブジェクトに対する参照を持つのに使用されます。
ユーザーがフィールドの値としてシーンオブジェクトを取得できるよう、 ObjectField UI 要素の型として使用されます。
以下の例はシーンをエディターで取得する方法です。 ScenePicker コンポーネントはシーンのゲームオブジェクトにアタッチされています。
using UnityEngine;
public class ScenePicker : MonoBehaviour { [SerializeField] public string scenePath; }
ScenePickerEditor スクリプトはプロジェクトの Editor ディレクトリに設置しなくてはいけません。ユーザーがシーンを選択できるよう、 ObjectField の SceneAsset クラスを使用するエディターのカスタムインスペクターを提供します。
using UnityEngine; using UnityEditor;
[CustomEditor(typeof(ScenePicker), true)] public class ScenePickerEditor : Editor { public override void OnInspectorGUI() { var picker = target as ScenePicker; var oldScene = AssetDatabase.LoadAssetAtPath<SceneAsset>(picker.scenePath);
serializedObject.Update();
EditorGUI.BeginChangeCheck(); var newScene = EditorGUILayout.ObjectField("scene", oldScene, typeof(SceneAsset), false) as SceneAsset;
if (EditorGUI.EndChangeCheck()) { var newPath = AssetDatabase.GetAssetPath(newScene); var scenePathProperty = serializedObject.FindProperty("scenePath"); scenePathProperty.stringValue = newPath; } serializedObject.ApplyModifiedProperties(); } }
SceneAsset | コンストラクター |
GetInstanceID | オブジェクトのインスタンス ID を返します |
ToString | Returns the name of the GameObject. |
Destroy | ゲームオブジェクトやコンポーネント、アセットを削除します |
DestroyImmediate | Destroys the object obj immediately. You are strongly recommended to use Destroy instead. |
DontDestroyOnLoad | 新しいシーンを読み込んでもオブジェクトが自動で破壊されないように設定します |
FindObjectOfType | タイプ type から最初に見つけたアクティブのオブジェクトを返します |
FindObjectsOfType | タイプから見つけたすべてのアクティブのオブジェクト配列を返します |
Instantiate | original のオブジェクトをクローンします |
bool | オブジェクトが存在するかどうか |
operator != | 二つのオブジェクトが異なるオブジェクトを参照しているか比較します |
operator == | 2つのオブジェクト参照が同じオブジェクトを参照しているか比較します。 |