Unity 6.3
0 онлайн 94 гостей 3 в системе
Вход
2D разработка игр Шаг 29 из 198

Загрузить атласы спрайтов вручную во время выполнения

Чтобы избежать загрузки Unity атласов спрайтов и присоединения их к вашим спрайтам при запуске проекта, загрузите атлас спрайтов во время выполнения. Это называется поздней связью.

Например, загрузите вариант атласа спрайтов с более низким разрешением в зависимости от оборудования, или загрузите набор спрайтов в память только тогда, когда это необходимо для более позднего уровня игры.

Примечание: Чтобы получить список спрайтов, упакованных в атлас спрайтов, например, если вам нужно вручную инстанционировать спрайты во время выполнения, используйте метод GetSprites из SpriteAtlas API. Для более подробной информации, см. SpriteAtlas.GetSprites.

Исключить атлас спрайтов из сборки

Чтобы предотвратить автоматическое включение Unity атласа спрайтов в сборку, выполните следующие действия:

  1. В окне Project выберите атлас спиритов.
  2. В окне Inspector отключите Включить в сборку.

Важно: По умолчанию это не влияет на представления Scene и Game, так как они продолжают ссылаться на файл .spriteatlasv2 в окне Project. Однако, если вы переходите в режим воспроизведения или создаете свой проект, спрайты исчезают, так как теперь они ссылаются на отсутствующий атлас спрайтов в сборке.

Загрузить атлас спрайтов во время выполнения

Когда вы отключаете Включить в сборку, ваши спрайты все еще ссылаются на атлас спрайтов при запуске проекта, но текстура атласа спрайтов отсутствует. Вы должны вручную привязать атлас спрайтов, когда спрайты запросят его.

Используйте один из следующих методов:

  • Загрузить атлас спрайтов из Система ресурсов и загрузить его с Resources.Load API.
  • Загрузить атлас спрайтов из AssetBundle и загрузить его с AssetBundle API.

Загрузить атлас спрайтов из системы ресурсов

Выполните следующие действия:

  1. В течение Project окно, создать папку с названием Ресурсы.

  2. Переместить ассет атласа спрайта в Ресурсы папка. Unity автоматически включает ассеты из Ресурсы папку в сборке, но не загружает их.

  3. В скрипте C# добавьте новый метод к обратному вызовам SpriteAtlasManager.atlasRequested. Обратный вызов atlasRequested запускается, когда спрайт запрашивает разгруженный атлас спрайтов. Например:

    void OnEnable()
    {
        SpriteAtlasManager.atlasRequested += MySpriteAtlasLoader;
    }
    
  4. В методе используйте Resources.Load API чтобы загрузить атлас спрайтов из Ресурсы папку и передать его обратно в Unity. Например:

    // Unity passes in the name of the sprite atlas that the sprite is requesting, and a callback to call
    void MySpriteAtlasLoader(string spriteAtlasName, System.Action<SpriteAtlas> callback)
    {
        // Load the sprite atlas
        var spriteAtlas = UnityEngine.Resources.Load<SpriteAtlas>(spriteAtlasName);
    
        // Pass the sprite atlas back to Unity
        callback(spriteAtlas);
    }
    

Дополнительные сведения см. в Использование системы ресурсов для загрузки ассетов во время выполнения.

Полный пример см. в примерах Sprite Atlas в пакете 2D Common. Более подробную информацию об примерах пакетов см. в Окно Package Manager.

Загрузить атлас спрайтов из AssetBundle

Выполните следующие действия:

  1. Назначьте атлас спрайтов AssetBundle. Дополнительные сведения см. в Назначение ассетов AssetBundle.

    Важно: Чтобы избежать дублирования спрайтов в вашем проекте, назначайте спрайты одному и тому же AssetBundle. Дополнительную информацию см. в Предотвращение дублирования активов.

    Примечание: Если вы назначаете атлас спрайта AssetBundle но позволяют Включить в сборку, вам не нужно загружать атлас спрайтов во время выполнения. Unity загружает атлас спрайтов автоматически.

  2. В скрипте C# добавьте новый метод к обратному вызовам SpriteAtlasManager.atlasRequested. Обратный вызов atlasRequested запускается, когда спрайт запрашивает разгруженный атлас спрайтов. Например:

    void OnEnable()
    {
        SpriteAtlasManager.atlasRequested += MySpriteAtlasLoader;
    }
    
  3. В методе используйте AssetBundle API для загрузки атласа спрайтов из AssetBundle и передачи его обратно в Unity. Например:

    // Unity passes in the name of the sprite atlas that the sprite is requesting, and a callback to call
    void MySpriteAtlasLoader(string spriteAtlasName, System.Action<SpriteAtlas> callback)
    {
        // Load the sprite atlas from the AssetBundle
        var bundle = AssetBundle.LoadFromFile("path/to/assetbundle");
        var spriteAtlas = bundle.LoadAsset<SpriteAtlas>(spriteAtlasName);
    
        // Pass the sprite atlas back to Unity
        callback(spriteAtlas);
    }
    

Дополнительные сведения см. в Загрузка ресурсов из AssetBundles.

Полный пример см. в примерах Sprite Atlas в пакете 2D Common. Более подробную информацию об примерах пакетов см. в Окно Package Manager.

Дополнительные ресурсы