En este vídeo se muestra como guardar datos en unity utilizando la clase PlayerPrefbs que es el método mas sencillo.
Para guardar existen tres funciones:
- SetInt( string llave, int dato)
- SetFloat( string llave, float dato)
- SetString( string llave, string dato)
Igualmente para cargar las mismas funciones:
- GetInt( string llave)
- GetFloat( string llave)
- GetString( string llave)
*Antes de guardar es mejor revisar si la llave existe, para esto se utiliza la función HasKey( string llave)
Aqui algunos ejemplos:
Script en C# para guardar el nombre del jugador:
string nombre = "";
void OnGUI(){
nombre = GUI.TextField(new Rect(0,0,200,40), nombre);
if(GUI.Button(new Rect(200,0,100,30), "Guardar")){
PlayerPrefbs.SetString("nombre", nombre);
}
}
Script en JS para guardar el nombre del jugador:
var nombre = "";
function OnGUI(){
nombre = GUI.TextField(new Rect(0,0,200,40), nombre);
if(GUI.Button(Rect(200,0,100,30), "Guardar")){
PlayerPrefbs.SetString("nombre", nombre);
}
}
Scripts del video:
Lenguaje C#
Script de movimiento del personaje
var nombre = "";
using UnityEngine;
using System.Collections;
public class Movimiento : MonoBehaviour {
int vidas = 3;
int salud = 100;
public float speed = 6.0F;
public float jumpSpeed = 8.0F;
public float gravity = 20.0F;
private Vector3 moveDirection = Vector3.zero;
void Update() {
CharacterController controller = GetComponent();
if (controller.isGrounded) {
moveDirection = new Vector3(Input.GetAxis("Horizontal"),
0, Input.GetAxis("Vertical"));
moveDirection = transform.TransformDirection(moveDirection);
moveDirection *= speed;
if (Input.GetButton("Jump"))
moveDirection.y = jumpSpeed;
}
moveDirection.y -= gravity * Time.deltaTime;
controller.Move(moveDirection * Time.deltaTime);
}
void OnTriggerEnter(Collider otro){
if(otro.tag == "checkpoint"){
PlayerPrefs.SetFloat("posX", otro.transform.position.x);
PlayerPrefs.SetFloat("posY", otro.transform.position.y);
PlayerPrefs.SetFloat("posZ", otro.transform.position.z);
PlayerPrefs.SetInt("salud", salud);
PlayerPrefs.SetInt("vidas", vidas);
Debug.Log("Guardo!!");
}
}
}
Script de guardado con interfaz grafica
string nombre = "";
using UnityEngine;
using System.Collections;
public class GuardarDatos : MonoBehaviour {
string nombre = "";
// Use this for initialization
void Start () {
if(PlayerPrefs.HasKey("dato1")){
Debug.Log("El nombre del jugador es: "+PlayerPrefs.GetString("dato1"));
nombre = PlayerPrefs.GetString("dato1");
}
}
// Update is called once per frame
void Update () {
if(Input.GetKeyDown("q")){
PlayerPrefs.SetString("dato1",nombre);
Debug.Log("Guardo!!");
}
if(Input.GetKeyDown("w")){
if(PlayerPrefs.HasKey("dato1")){
string info = PlayerPrefs.GetString("dato1");
Debug.Log("Guardado: "+info);
}
}
}
void OnGUI(){
nombre = GUI.TextField(new Rect(0,0,200,30), nombre);
}
}
Lenguaje JS
Script de movimiento del personaje
vidas = 3;
salud = 100;
public speed = 6.0F;
public jumpSpeed = 8.0F;
public gravity = 20.0F;
private moveDirection : Vector3 = Vector3.zero;
function Update() {
controller : CharacterController = GetComponent();
if (controller.isGrounded) {
moveDirection = Vector3(Input.GetAxis("Horizontal"),
0, Input.GetAxis("Vertical"));
moveDirection = transform.TransformDirection(moveDirection);
moveDirection *= speed;
if (Input.GetButton("Jump"))
moveDirection.y = jumpSpeed;
}
moveDirection.y -= gravity * Time.deltaTime;
controller.Move(moveDirection * Time.deltaTime);
}
function OnTriggerEnter(otro : Collider){
if(otro.tag == "checkpoint"){
PlayerPrefs.SetFloat("posX", otro.transform.position.x);
PlayerPrefs.SetFloat("posY", otro.transform.position.y);
PlayerPrefs.SetFloat("posZ", otro.transform.position.z);
PlayerPrefs.SetInt("salud", salud);
PlayerPrefs.SetInt("vidas", vidas);
Debug.Log("Guardo!!");
}
}
Script de guardado con interfaz grafica
var nombre = "";
// Use this for initialization
function Start () {
if(PlayerPrefs.HasKey("dato1")){
Debug.Log("El nombre del jugador es: "+PlayerPrefs.GetString("dato1"));
nombre = PlayerPrefs.GetString("dato1");
}
}
// Update is called once per frame
function Update () {
if(Input.GetKeyDown("q")){
PlayerPrefs.SetString("dato1",nombre);
Debug.Log("Guardo!!");
}
if(Input.GetKeyDown("w")){
if(PlayerPrefs.HasKey("dato1")){
string info = PlayerPrefs.GetString("dato1");
Debug.Log("Guardado: "+info);
}
}
}
function OnGUI(){
nombre = GUI.TextField(Rect(0,0,200,30), nombre);
}
Una pregunta, cuando renderice el proyecto y lo convierta en un juego, pasará lo mismo que en el video?
ResponderEliminar(si cuando en el proyecto le de a "q" para guardar y "w" para cargar pasará lo mismo cuando ya sea un juego el proyecto y me aparecerá la carpeta de checkpoints que yo haya guardado)
mcuhas gracias sergio!!
ResponderEliminargracias :D
ResponderEliminardonde se encuentra el archivo de forma fisica en el directorio ?? :s o no se puede visualizar :s
ResponderEliminar