Net-Game/Library/PackageCache/com.unity.2d.animation@494a3b4e73a9/Runtime/SpriteSkinContainer.cs
2025-03-28 08:33:16 -04:00

55 lines
1.6 KiB
C#

using System;
using System.Collections.Generic;
namespace UnityEngine.U2D.Animation
{
internal class SpriteSkinContainer : ScriptableObject
{
public static event Action<SpriteSkin> onAddedSpriteSkin;
public static event Action<SpriteSkin> onRemovedSpriteSkin;
public static event Action<SpriteSkin> onBoneTransformChanged;
static SpriteSkinContainer s_Instance;
public static SpriteSkinContainer instance
{
get
{
if (s_Instance == null)
{
var managers = Resources.FindObjectsOfTypeAll<SpriteSkinContainer>();
if (managers.Length > 0)
s_Instance = managers[0];
else
s_Instance = CreateInstance<SpriteSkinContainer>();
s_Instance.hideFlags = HideFlags.HideAndDontSave;
}
return s_Instance;
}
}
List<SpriteSkin> m_SpriteSkin = new List<SpriteSkin>();
public IReadOnlyList<SpriteSkin> spriteSkins => m_SpriteSkin;
public void AddSpriteSkin(SpriteSkin spriteSkin)
{
m_SpriteSkin.Add(spriteSkin);
onAddedSpriteSkin?.Invoke(spriteSkin);
}
public void RemoveSpriteSkin(SpriteSkin spriteSkin)
{
m_SpriteSkin.Remove(spriteSkin);
onRemovedSpriteSkin?.Invoke(spriteSkin);
}
public void BoneTransformsChanged(SpriteSkin spriteSkin)
{
onBoneTransformChanged?.Invoke(spriteSkin);
}
}
}