Как дополнить скрипт для запоминания количества кристаллов?

Я написал код для сбора кристаллов:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class CrystallCollect : MonoBehaviour
{
    public static int crystallCount;
    private Text crystallConter;

    void Start()
    {
        crystallConter = GetComponent<Text>();
        crystallCount = 0;
    }

    
    void Update()
    {
        crystallConter.text = "" + crystallCount;
    }
}

После чего на персонажа добавил:

private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.tag.Equals("Crystall"))
        {
            CrystallCollect.crystallCount += 1;
            Destroy(collision.gameObject);
        }
    }

Как дополнить скрипт для запоминания количества кристаллов? Заранее спасибо


Ответы (2 шт):

Автор решения: Noname guy

Добавьте метод для снятия кристаллов со счета (например для покупки или в качестве штрафа за смерть), сделайте Text crystallConter public, чтобы можно было из Unity перетаскивать объекты

public class CrystallCollect : MonoBehaviour
{
    public static int crystallCount;
    public Text crystallConter; 
    public int DeathWithdrawAmount = 10;//количество снятых кристаллов при смерти

    void Start()
    {
        crystallConter = GetComponent<Text>();
        crystallCount = 0;
    }

    public void Withdraw(int amount) //для снятия со счета
    {
        crystallCount -= amount
    }

    public void DeathPenalty() //вызывайте в скрипте персонажа при смерти
    {
        crystallCount -= DeathWithdrawAmount;
    }

    
    void Update()
    {
        crystallConter.text = "" + crystallCount;
    }
}
→ Ссылка
Автор решения: AC Studio
private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.tag.Equals("Crystall"))
        {
            CrystallCollect.crystallCount += 1;
    //Сохранение CrystallCollect.crystallCount
            PlayerPrefs.SetFloat ("Crystall",CrystallCollect.crystallCount );
            Destroy(collision.gameObject);
        }
    }

чтобы получить сохранённое сохранение нужно вставить куда то этот код в Start или куда нибудь на ваше усмотрение

void Start()
{ 
  crystallCount = PlayerPrefs.GetFloat ("Crystall", 0);
}
→ Ссылка