SpritePresetInitializer

https://github.com/VMware233/VMFramework/blob/main/Assets/VMFramework/Main/ResourcesManagement/Spirit/SpritePresetInitializer.cs
using System;
using System.Collections.Generic;
using EnumsNET;
using UnityEngine;
using UnityEngine.Scripting;
using VMFramework.Core;
using VMFramework.GameLogicArchitecture;
using VMFramework.Procedure;

namespace VMFramework.ResourcesManagement
{
    [GameInitializerRegister(GameInitializationDoneProcedure.ID, ProcedureLoadingType.OnEnter)]
    [Preserve]
    public sealed class SpritePresetInitializer : IGameInitializer
    {
        void IInitializer.GetInitializationActions(ICollection<InitializationAction> actions)
        {
            actions.Add(new(InitializationOrder.Init, OnInit, this));
        }

        private static void OnInit(Action onDone)
        {
            int count = 0;
            
            foreach (var spritePreset in GamePrefabManager.GetAllActiveGamePrefabs<SpritePreset>())
            {
                foreach (var flipType in spritePreset.preloadFlipType.GetFlags())
                {
                    SpriteManager.GetSprite(spritePreset.id, flipType);
                    
                    count++;
                }
            }

            if (count > 0)
            {
                Debugger.Log($"Preloaded {count} sprites' flip types.");
            }
            
            onDone();
        }
    }
}

最后更新于

这有帮助吗?