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(); } }
| GetInstanceID | 获取对象的实例 ID。 | 
| ToString | 返回对象的名称。 | 
| Destroy | 删除游戏对象、组件或资源。 | 
| DestroyImmediate | 立即销毁对象 obj。强烈建议您改用 Destroy。 | 
| DontDestroyOnLoad | 加载新场景时不要销毁目标对象。 | 
| FindAnyObjectByType | 检索类型为 type 的任何已加载的活动对象。 | 
| FindFirstObjectByType | 检索类型为 type 的第一个已加载的活动对象。 | 
| FindObjectsByType | 检索类型为 type 的所有已加载对象的列表。 | 
| Instantiate | 克隆对象 original 并返回克隆。 | 
| InstantiateAsync | 捕获原始对象(必须与某些 GameObject 相关)的快照并返回 AsyncInstantiateOperation。 | 
| bool | 对象是否存在? | 
| operator != | 比较两个对象是否引用不同的对象。 | 
| operator == | 比较两个对象引用是否引用同一个对象。 |