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 game object. |
Destroy | 删除 GameObject、组件或资源。 |
DestroyImmediate | 立即销毁对象 /obj/。强烈建议您改用 Destroy。 |
DontDestroyOnLoad | 加载新场景时,不自动销毁对象 /target/。 |
FindObjectOfType | 返回第一个类型为 type 的已加载的激活对象。 |
FindObjectsOfType | 返回所有类型为 type 的已加载的激活对象的列表。 |
Instantiate | 克隆 original 对象并返回克隆对象。 |
bool | 该对象是否存在? |
operator != | 比较两个对象是否引用不同的对象。 |
operator == | 比较两个对象引用,判断它们是否引用同一个对象。 |