je crée en ce moment un jeu 2d (un peu un zelda-like). quand je vais dans une maison ou grotte, je change de scène et
quand je reviens dans ma scène de base, je reprends tout depuis le début(normal)
ce que je veux, c'est sauvegarder la position x et y du joueur avant qu'il change de scène pour ensuite la charger quand il reviens.
alors je crée un script "test" pour voir si tout fonctionne. le but est que quand je rentre en collision avec on va dire n'importe quoi, ça sauvegarde ma position et quand j'appuie sur la touche H, ma position se charge (et donc si j'ai bien compris, ça devrai me téléporter.)
sauf que... rien ne se passe...
je ne sais pas si c'est moi qui a mal utiliser les PlayerPrefs ou si je devrai utiliser une autre méthode de sauvegarde plus adapté à cette situation...
voici le script
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SavePos : MonoBehaviour
{
public float[] MesPos = new float[2];
public GameObject player;
void Update()
{
MesPos[0] = player.transform.position.x;
MesPos[1] = player.transform.position.y;
if(Input.GetKeyDown(KeyCode.H))
{
Debug.Log("première étape terminé");
if(PlayerPrefs.HasKey("PosX") & PlayerPrefs.HasKey("PosY"))
{
Debug.Log("Deuxième étape terminé");
MesPos[0] = PlayerPrefs.GetFloat("PosX");
MesPos[1] = PlayerPrefs.GetFloat("PosY");
}
}
}
private void OnTriggerEnter2D(Collider2D collision)
{
if(collision.CompareTag("Player"))
{
SaveAllPos();
}
}
public void SaveAllPos()
{
PlayerPrefs.SetFloat("PosX", MesPos[0]);
PlayerPrefs.SetFloat("PosY", MesPos[1]);
PlayerPrefs.Save();
}
}
comme je vous ai dit, rien ne se passe alors j'ai mis des Debug.Log. les deux sont affichés dans la console.
j'espère que vous avez bien tout compris quel était mon problème.
bonne journée ou soirée.