Unity 6.3
0 онлайн 79 гостей 3 в системе
Вход

Preset.IsEditorTargetAPreset

Declaration

public static bool IsEditorTargetAPreset(Object target);

Описание

Возвращает true, если заданной целью является временный экземпляр UnityEngine.Object, созданный внутри PresetEditor.

Этот метод должен быть использован изнутри CustomEditor для изменения того, какие значения отображаются в контексте Preset. Некоторые CustomEditors, такие как глобальные настройки, смешиваются с серийными значениями, которые могут быть частью Preset, и глобальными значениями, которые совместно используются проектами, не поддающимися серийному кодированию. В инспекторе Preset эти глобальные значения должны быть скрыты или, по крайней мере, отключены, так как изменение их в Preset на самом деле изменит их глобально.

using UnityEditor;
using UnityEditor.Presets;
using UnityEditor.UIElements;
using UnityEngine;
using UnityEngine.UIElements;

[CustomEditor(typeof(SomeSettings))] class SomeSettingsEditor : Editor { public override VisualElement CreateInspectorGUI() { var root = new VisualElement();

// create UI for serialized data var aFloat = new PropertyField(serializedObject.FindProperty("m_AFloat")); root.Add(aFloat);

// We are adding another field with an EditorPref data that we want to be excluded from the Preset UI. if (!Preset.IsEditorTargetAPreset(target)) { var global = new FloatField("Global Pref"); global.value = EditorPrefs.GetFloat("SomeGlobalSetting", 0.0f); global.RegisterCallback<ChangeEvent<float>>(evt => EditorPrefs.SetFloat("SomeGlobalSetting", evt.newValue)); root.Add(global); }

return root; } }

class SomeSettings : ScriptableObject { public float m_AFloat; }