Octava sesión del taller de creación de videojuegos con Unity

En la octava sesión, añadimos opciones de sonido y creamos la primera versión para gestionar información guardada en el juego.

A continuación os dejamos el vídeo que se ha estrenado hoy viernes 5 de junio.

Podéis descargar las imágenes y los scripts aquí:

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

[Serializable] // Definimos la clase PlayerData, que contiene los datos de jugador
public class PlayerData
{
    public int mainLanguage; // Idioma del juego
    public float BGMvolume; // Volumen de la música
    public float BGMhandlePosition; // Posición del deslizador del volumen de la música
    public float SEvolume; // Volumen de los efectos
    public float SEhandlePosition; // Posición del deslizador del volumen de los efectos
}

// Definimos la clase PlayerPrefsSaver, que gestionará los datos del jugador
public class PlayerPrefsSaver : MonoBehaviour
{
    public PlayerData playerData;

    private void Awake()
    {
        LoadGame();
    }

    // En Update() comprobamos si se pulsan las teclas S o L para probar el sistema de guardado/carga
    void Update()
    {
		// Si apretamos la tecla S, guardamos los datos
        if (Input.GetKeyDown(KeyCode.S))
            SaveCharacter(playerData, 0);

		// Si apretamos la tecla L, cargamos los datos
        if (Input.GetKeyDown(KeyCode.L))
            playerData = LoadCharacter(0);
    }

	// Función para guardar los datos del jugador
    static void SaveCharacter(PlayerData data, int Slot)
    {
        PlayerPrefs.SetInt("mainLanguage_" + Slot, data.mainLanguage);
        PlayerPrefs.SetFloat("BGMvolume_" + Slot, data.BGMvolume);
        PlayerPrefs.SetFloat("BGMhandlePosition_" + Slot, data.BGMhandlePosition);
        PlayerPrefs.SetFloat("SEvolume_" + Slot, data.SEvolume);
        PlayerPrefs.SetFloat("SEhandlePosition_" + Slot, data.SEhandlePosition);
        PlayerPrefs.Save();
    }

	// Función para guardar los datos del jugador
    static PlayerData LoadCharacter(int Slot)
    {
        PlayerData loadedCharacter = new PlayerData();
        Debug.Log("Loading game");
        loadedCharacter.mainLanguage = PlayerPrefs.GetInt("mainLanguage_" + Slot, 0);
        loadedCharacter.BGMvolume = PlayerPrefs.GetFloat("BGMvolume_" + Slot, 0.5f);
        loadedCharacter.BGMhandlePosition = PlayerPrefs.GetFloat("BGMhandlePosition_" + Slot, 0);
        loadedCharacter.SEvolume = PlayerPrefs.GetFloat("SEvolume_" + Slot, 0.5f);
        loadedCharacter.SEhandlePosition = PlayerPrefs.GetFloat("SEhandlePosition_" + Slot, 0);
        return loadedCharacter;
    }
	
	// Función para guardar el progreso
    public void SaveGame()
    {
        SaveCharacter(playerData, 0);
    }
	
	// Función para cargar el progreso
    public void LoadGame()
    {
        playerData = LoadCharacter(0);
    }

    // A continuación declaramos todas las funciones setter y getter para los diferentes datos del PlayerPrefs
    public void setMainLanguage(int myLanguage)
    {
        playerData.mainLanguage = myLanguage;
    }

    public int getMainLanguage()
    {
        return playerData.mainLanguage;
    }

    public void setBGMvolume(float bgmVolume)
    {
        playerData.BGMvolume = bgmVolume;
    }

    public float getBGMvolume()
    {
        return playerData.BGMvolume;
    }

    public void setBGMhandlePosition(float bgmHandlePosition)
    {
        playerData.BGMhandlePosition = bgmHandlePosition;
    }

    public float getBGMhandlePosition()
    {
        return playerData.BGMhandlePosition;
    }

    public void setSEvolume(float seVolume)
    {
        playerData.SEvolume = seVolume;
    }

    public float getSEvolume()
    {
        return playerData.SEvolume;
    }

    public void setSEhandlePosition(float seHandlePosition)
    {
        playerData.SEhandlePosition = seHandlePosition;
    }

    public float getSEhandlePosition()
    {
        return playerData.SEhandlePosition;
    }

}
 

¡Esperamos que os sea de ayuda! ¡Nos vemos en la próxima sesión!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Pin It on Pinterest

×