Files
Hasebe/Library/PackageCache/com.unity.2d.sprite@b95ff9c6e864/Editor/ProjectSettings/SpriteFrameModuleSettings/SpriteFrameModuleSettings.cs
T
2026-09-25 00:42:08 +03:00

58 lines
3.0 KiB
C#

using System;
using UnityEngine;
using UnityEngine.UIElements;
namespace UnityEditor.U2D.Sprites.ProjectSettings
{
class SpriteFrameModuleSettings
{
const string k_Uxml = "Packages/com.unity.2d.sprite/Editor/ProjectSettings/SpriteFrameModuleSettings/SpriteFrameModuleSettings.uxml";
[SpriteEditorWindowProjectSettings("Sprite Frame Module", new[] { "Sprite Frame Module, lock, unlock, capability, override"})]
public static VisualElement CreateSettingsProvider()
{
var styleSheet = EditorGUIUtility.Load("UIPackageResources/Settings/UIToolkitSettingsView.uss") as StyleSheet;
var ve = new VisualElement();
var visualTreeAsset = AssetDatabase.LoadAssetAtPath<VisualTreeAsset>(k_Uxml);
if(visualTreeAsset == null)
{
ve.Add(new Label("Unable to load settings UI."));
Debug.LogError($"Failed to load UI {k_Uxml}.");
return ve;
}
visualTreeAsset.CloneTree(ve);
if(styleSheet == null)
Debug.LogError("Failed to load stylesheet for Sprite Frame Module Settings.");
else
ve.styleSheets.Add(styleSheet);
var spriteFrameEditCapabilityOverride = ve.Q<VisualElement>("spriteFrameEditCapabilityOverrideWarning");
var spriteFrameEditCapabilityToggle = ve.Q<Toggle>("spriteFrameEditCapabilityOverride");
spriteFrameEditCapabilityToggle.SetValueWithoutNotify(SpriteFrameModuleSettingsAsset.allowSpriteFrameEditCapabilityOverride);
spriteFrameEditCapabilityOverride.visible = SpriteFrameModuleSettingsAsset.allowSpriteFrameEditCapabilityOverride;
spriteFrameEditCapabilityOverride.style.display = spriteFrameEditCapabilityOverride.visible ? DisplayStyle.Flex : DisplayStyle.None;
Action onSettingsChanged = () =>
{
spriteFrameEditCapabilityToggle.SetValueWithoutNotify(SpriteFrameModuleSettingsAsset.allowSpriteFrameEditCapabilityOverride);
};
ve.RegisterCallback<AttachToPanelEvent>(evt =>
{
SpriteFrameModuleSettingsAsset.SettingsChanged += onSettingsChanged;
});
ve.RegisterCallback<DetachFromPanelEvent>(evt =>
{
SpriteFrameModuleSettingsAsset.SettingsChanged -= onSettingsChanged;
});
spriteFrameEditCapabilityToggle.RegisterValueChangedCallback(evt =>
{
if (SpriteFrameModuleSettingsAsset.allowSpriteFrameEditCapabilityOverride != evt.newValue)
{
SpriteFrameModuleSettingsAsset.allowSpriteFrameEditCapabilityOverride = evt.newValue;
SpriteFrameModuleSettingsAsset.Save();
}
spriteFrameEditCapabilityOverride.visible = evt.newValue;
spriteFrameEditCapabilityOverride.style.display = spriteFrameEditCapabilityOverride.visible ? DisplayStyle.Flex : DisplayStyle.None;
});
return ve;
}
}
}