You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Jeremy/Assets/Scripts/SwitchableScene.cs

54 lines
1.4 KiB

using System;
using System.Collections.Generic;
using UnityEngine.UIElements;
#if UNITY_EDITOR
using UnityEditor;
#endif
[Serializable]
public class SwitchableScene
{
public int index;
}
#if UNITY_EDITOR
// custom property drawer
[CustomPropertyDrawer(typeof(SwitchableScene))]
public class SwitchableSceneDrawer : PropertyDrawer
{
public override VisualElement CreatePropertyGUI(SerializedProperty property)
{
// Get the SceneSwitcher component
if (SceneSwitcher.Instance == null)
{
return new Label("SceneSwitcher component not found in the scene.");
}
// create dropdown based on the SceneSwitcher options
var root = new VisualElement();
// Get the list of scenes
List<(string name, int index)> scenes = SceneSwitcher.Instance.GetScenes();
// create dropdown
var indexProperty = property.FindPropertyRelative("index");
var dropdown = new PopupField<string>("Scene", scenes.ConvertAll(t => t.name), scenes[indexProperty.intValue].name);
dropdown.RegisterValueChangedCallback(evt =>
{
indexProperty.intValue = scenes.FindIndex(t => t.name == evt.newValue);
indexProperty.serializedObject.ApplyModifiedProperties();
});
root.Add(dropdown);
return root;
}
}
#endif