Net-Game/Library/PackageCache/com.unity.2d.animation@494a3b4e73a9/Samples~/AnimationSamples/4 SpriteSwap/Scripts/Runtime/FullSkinSwapUI.cs
2025-03-28 08:33:16 -04:00

52 lines
1.7 KiB
C#

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.U2D.Animation;
using UnityEngine.UIElements;
namespace Unity.U2D.Animation.Sample
{
internal class FullSkinSwapUI : MonoBehaviour
{
[SerializeField]
SpriteLibraryAsset[] m_SpriteLibraryAssets;
[SerializeField]
SpriteLibrary m_TargetSpriteLibrary;
void OnEnable()
{
var uiDocument = GetComponent<UIDocument>();
var description = uiDocument.rootVisualElement.Q<Label>("Description");
description.text = "The entire character visual can be swapped by changing the SpriteLibraryAsset that is being used by the SpriteLibrary.";
var choices = new List<string>(m_SpriteLibraryAssets.Length);
var dropdownField = uiDocument.rootVisualElement.Q<DropdownField>();
foreach (var spriteLibraryAsset in m_SpriteLibraryAssets)
choices.Add(spriteLibraryAsset.name);
dropdownField.choices = choices;
dropdownField.value = m_SpriteLibraryAssets[0].name;
dropdownField.RegisterValueChangedCallback(OnDropdownValueChanged);
uiDocument.rootVisualElement.MarkDirtyRepaint();
}
void OnDropdownValueChanged(ChangeEvent<string> evt)
{
SpriteLibraryAsset selectedAsset = null;
foreach (var asset in m_SpriteLibraryAssets)
{
if (asset.name == evt.newValue)
{
selectedAsset = asset;
break;
}
}
if (selectedAsset != null)
m_TargetSpriteLibrary.spriteLibraryAsset = selectedAsset;
}
}
}