Top.Mail.Ru
Ответы

Сохранение в Unity

Как сделать так, чтобы при прикосновении с тригером сохранялись Монеты и Чекпоинт на котором остановился персонаж .

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
 using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
using UnityEngine.UI; 
using static UnityEditor.PlayerSettings; 
public class CheckPoint : MonoBehaviour 
{ 
    [SerializeField] GameObject player; 
    [SerializeField] List<GameObject> checkpoints; 
    [SerializeField] Vector3 vectorPoint; 
    [SerializeField] float dead; 
 
 
    public Text coinTxt; 
    public int coins; 
 
    private void Start() 
    { 
        coinTxt.text = coins.ToString(); 
    } 
 
    private void Update() 
    { 
        if(player.transform.position.y < -dead) 
        { 
            player.transform.position = vectorPoint; 
        } 
 
        
    } 
 
    private void OnTriggerEnter(Collider check) 
    { 
 
   
        vectorPoint = player.transform.position; 
        Destroy(check.gameObject); 
 
        if (check.gameObject.tag == "coin") 
        { 
            coins++; 
            coinTxt.text = coins.ToString(); 
        } 
 
 
    } 
 
} 
 
    

код чекпоинта

По дате
По рейтингу
Аватар пользователя
Оракул
7мес
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
 using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
using UnityEngine.UI; 
using static UnityEditor.PlayerSettings; 
 
public class CheckPoint : MonoBehaviour 
{ 
    [SerializeField] GameObject player; 
    [SerializeField] List<GameObject> checkpoints; 
    [SerializeField] Vector3 vectorPoint; 
    [SerializeField] float dead; 
 
    public Text coinTxt; 
    public int coins; 
 
    private void Start() 
    { 
        coins = PlayerPrefs.GetInt("Coins", 0); 
        coinTxt.text = coins.ToString(); 
        vectorPoint = new Vector3( 
            PlayerPrefs.GetFloat("CheckpointX", player.transform.position.x), 
            PlayerPrefs.GetFloat("CheckpointY", player.transform.position.y), 
            PlayerPrefs.GetFloat("CheckpointZ", player.transform.position.z) 
        ); 
        player.transform.position = vectorPoint; 
    } 
 
    private void Update() 
    { 
        if(player.transform.position.y < -dead) 
        { 
            player.transform.position = vectorPoint; 
        } 
    } 
 
    private void OnTriggerEnter(Collider check) 
    { 
        if (check.gameObject.tag == "coin") 
        { 
            coins++; 
            PlayerPrefs.SetInt("Coins", coins); 
            PlayerPrefs.Save(); 
            coinTxt.text = coins.ToString(); 
            Destroy(check.gameObject); 
        } 
        else if (check.gameObject.tag == "checkpoint") 
        { 
            vectorPoint = player.transform.position; 
            PlayerPrefs.SetFloat("CheckpointX", vectorPoint.x); 
            PlayerPrefs.SetFloat("CheckpointY", vectorPoint.y); 
            PlayerPrefs.SetFloat("CheckpointZ", vectorPoint.z); 
            PlayerPrefs.Save(); 
            Destroy(check.gameObject); 
        } 
    } 
} 
Аватар пользователя
Искусственный Интеллект
7мес

Скачай LM Studio себе и с ним работай.

Аватар пользователя
Просветленный
7мес
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
 using System.Collections.Generic; 
using UnityEngine; 
using UnityEngine.UI; 
public class CheckPoint : MonoBehaviour  
{  
    [SerializeField] GameObject player;  
    [SerializeField] List<GameObject> checkpoints;  
    [SerializeField] Vector3 vectorPoint;  
    [SerializeField] float dead;  
    public Text coinTxt;  
    public int coins;  
    private void Start()  
    {  
        // Загружаем сохраненные данные при старте 
        LoadGame(); 
        coinTxt.text = coins.ToString();  
    }  
    private void Update()  
    {  
        if(player.transform.position.y < -dead)  
        {  
            player.transform.position = vectorPoint;  
        }  
    }  
    private void OnTriggerEnter(Collider check)  
    {  
        // Сохраняем позицию чекпоинта 
        vectorPoint = player.transform.position;  
        // Удаляем монету из мира 
        if (check.gameObject.CompareTag("coin"))  
        {  
            coins++;  
            coinTxt.text = coins.ToString();  
            Destroy(check.gameObject);  
            SaveGame(); // Сохраняем состояние игры 
        }  
    }  
    private void SaveGame()  
    { 
        PlayerPrefs.SetInt("Coins", coins); 
        PlayerPrefs.SetString("Checkpoint", vectorPoint.ToString()); 
        PlayerPrefs.Save(); // Сохраняем изменения 
    } 
    private void LoadGame()  
    { 
        coins = PlayerPrefs.GetInt("Coins", 0); // 0 - значение по умолчанию 
        string checkpointString = PlayerPrefs.GetString("Checkpoint", vectorPoint.ToString()); 
        vectorPoint = StringToVector3(checkpointString); 
    } 
    private Vector3 StringToVector3(string sVector)  
    { 
        string[] sArray = sVector.Replace("(", "").Replace(")", "").Split(','); 
        return new Vector3(float.Parse(sArray[0]), float.Parse(sArray[1]), float.Parse(sArray[2])); 
    } 
}  
Аватар пользователя
Мастер
7мес

Ячоебу