Изменение изображения спрайта Unity с помощью кода и его сохранение

#c# #unity3d

#c# #unity3d

Вопрос:

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

Ответ №1:

Назначьте спрайты вашего игрока в список спрайтов, спрайт [0] для спрайта уровня 1, спрайты [1] для спрайта уровня 2 и так далее. Затем установите спрайт вашего SpriteRenderer на спрайт в списке в соответствии с сохраненным уровнем.

 [SerializeField] List<Sprite> sprites;
[SerializeField] SpriteRenderer m_SpriteRenderer;
int currentLevel;

private void Start()
{
    currentLevel = PlayerPrefs.GetInt("PlayerLevel", 1); //load player level
    LoadCurrentSprite();
}

void LoadCurrentSprite()
{
    m_SpriteRenderer.sprite = sprites[currentLevel - 1];
}
 

Когда вы меняете уровень персонажа, вызывайте это

 void SetPlayerLevel(int level)
{
    currentLevel = level;
    PlayerPrefs.SetInt("PlayerLevel", level);
    LoadCurrentSprite();
}