Есть канвас, на нем Image. В него из скрипта грузятся спрайты из папки Resources:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class SpriteController : MonoBehaviour {
public int level = 0;
public Image Picture;
void Start () {
Picture.sprite = Resources.Load<Sprite>(level.ToString());
}
void NextLevel(){
level++;
Picture.sprite = Resources.Load<Sprite>(level.ToString());
}
}
В папке около 50 спрайтов. Функция NextLevel вызывается довольно часто. Правильно ли я понимаю, что при переходе на следующий уровень (level++) и загрузке следующих спрайтов, все загруженные до этого не удаляются и продолжают висеть в памяти, занимая место?
Если да, то нужно ли делать их выгрузку при каждой загрузке нового спрайта, учитывая, что предыдущие спрайты в игре точно уже не будут использоваться? (Спрайты - изображения весом по 1,5 Мб каждый, 800х600) Для выгрузки метод Resources.UnloadUnusedAssets() не подойдёт? Я так понимаю, он выгружает только ассеты? Как тогда правильно выгрузить мои спрайты? Таким образом?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class SpriteController : MonoBehaviour {
public int level = 0;
public Image Picture;
Sprite mySprite;
void Start () {
mySprite = Resources.Load<Sprite>(level.ToString());
Picture.sprite = mySprite;
}
void NextLevel(){
level++;
Destroy (mySprite);
mySprite = Resources.Load<Sprite>(level.ToString());
Picture.sprite = mySprite;
}
}
Я правильно всё понимаю или что-то не так/можно реализовать лучше?