Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Salva

#1
General (Antiguo) / Desbloqueo de Niveles
Septiembre 17, 2015, 12:55:01 AM
[quote author=daniele_kiro" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="24180" data-ipsquote-contentcommentid="110977">
var Objeto : GameObject;function Update (){
   
    if (PlayerPrefs.HasKey("nivel1")){
        Objeto.SetActive(true);
    }else{
        Objeto.SetActive(false);
    }
   
   
   
}
si lo quieres hacer instantáneo, no los destruyas ... desactivalos solo. [/quote]ok, ya lo tengo finiquitado muchisimas gracias !
#2
General (Antiguo) / Desbloqueo de Niveles
Septiembre 16, 2015, 02:43:39 PM
[quote author=daniele_kiro" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="24180" data-ipsquote-contentcommentid="110892 date=1442383925]Puedes hacerlo con el sistema de PlayerPrefs...Cuando termines un nivel por ejemplo el 1 pones PlayerPrefs.SetInt("nivel1");y al objeto que quieras que desaparezca le puedes poner : if (PlayerPrefs.HasKey("nivel1")){  Destroy(gameObject);  }puedes ir probando y adaptandolo luego a tus necesidades...[/quote]Gracias! lo hice y ya funciona, la unica pega es que para que ocurra tengo que darle a stop y volver a darle al play, si no lo hago siguen bloqueados, el script lo puse dentro del boton que tengo en la pantalla principal para entrar a la seleccion de niveles
#3
General (Antiguo) / Desbloqueo de Niveles
Septiembre 16, 2015, 12:27:15 AM
Saludos gente, estoy terminando un jueguecillo muy simple pero no consigo hacer para que al conseguir X puntuacion esta haga que en otra escena, en una ventana de selección de niveles que ya tengo hecha desaparezca un objeto que es la imagen de un candado y aparezca en su lugar la imagen del nivel con el collider para entrar al susodicho nivel, alguna sugerencia? 
#4
General (Antiguo) / Duda con OnMouseDown
Septiembre 10, 2015, 11:25:58 PM
[quote author=Edgargaza" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="21467" data-ipsquote-contentcommentid="108501">De acuerdo, hago el código y en cuanto lo tenga lo comparto ;using System.Collections;
using System.Collections.Generic;

/**
 * - Esta clase será nuestra interfaz para cargar el nivel. Para que se muestre, debemos añadirla
 * como componente a un objeto dentro del juego, y crear una nueva cámara
 */
public class SeleccionNivel : MonoBehaviour {
// Atributos privados
private List<Nivel> listaNiveles = new List<Nivel>(); // Lista de niveles
private Nivel nivelSeleccionado; // Nivel seleccionado

/**
 *  - Metodo preconstruido por UnityEngine que se autoejecuta al iniciar el juego
 */
public void Start() {
   // Añadimos dos niveles ("Nivel1" y "Nivel2")
   Nivel nivel1 = new Nivel ("Nivel1", 0);
   Nivel nivel2 = new Nivel ("Nivel2", 1);

   añadirNivel (nivel1);
   añadirNivel (nivel2);

   // Comprobacion de que los niveles se han añadido correctamente
   Debug.Log ("Niveles en la lista: " + listaNiveles.Count.ToString ());

   // Añadimos el primer nivel creado como el nivel seleccionado por defecto
   nivelSeleccionado = listaNiveles[0];

}

/**
 * - Metodo para añadir un nivel especifico a la lista de niveles
 */
public void añadirNivel(Nivel nivel) {
   if (!listaNiveles.Contains (nivel)) {
      listaNiveles.Add (nivel);
      Debug.Log ("Nuevo nivel añadido! Nombre: " + nivel.getNombre () + ", id: " + nivel.getNumeroNivel());
   } else {
      Debug.LogError ("El nivel que intentas añadir ya existe! (nombre: " + nivel.getNombre() + ", id: " + nivel.getNumeroNivel() + ")");
   }
}

/**
 * - Metodo para eliminar un nivel especifico de la lista de niveles
 */
public void eliminarNivel(Nivel nivel) {
   if(listaNiveles.Contains (nivel)) {
      listaNiveles.Remove (nivel);
      Debug.Log ("El nivel ha sido eliminado correctamente! (nombre: " + nivel.getNombre() + ", id: " + nivel.getNumeroNivel() + ")");
   } else {
      Debug.LogError ("El nivel no existe dentro de la lista de niveles! (nombre: " + nivel.getNombre() + ", id: " + nivel.getNumeroNivel() + ")");
   }
}

/**
 * - Metodo preconstruido por UnityEngine para dibujar todos los elementos de una GUI (Graphic User Interface)
 */
public void OnGUI() {
   // Crea un contenedor para organizar visualmente la interfaz
   GUI.Box (new Rect (5,5,160,50), ""); // El segundo parametro es un string el cual se refiere al nombre que mostraria el contenedor. En este caso, no le ponemos nombre

   // Crea dos labels (textos) para mostrar tanto el nombre del nivel como su numero de identificacion (id)
   GUI.Label (new Rect (10, 10, 150, 30), "Nombre: " + nivelSeleccionado.getNombre()); // Nombre del nivel
   GUI.Label (new Rect (10, 30, 150, 30), "ID: " + nivelSeleccionado.getNumeroNivel().ToString()); // Identificador del nivel

   // Crea los botones para seleccionar los respectivos niveles
   if (GUI.Button (new Rect (10, 60, 150, 30), "Siguiente")) { // Boton para avanzar
      int indexNivelSeleccionado = listaNiveles.IndexOf (nivelSeleccionado); // Posicion que ocupa el nivel en la lista

      if(indexNivelSeleccionado < listaNiveles.Count-1) // Si el nivel seleccionado no es el ultimo, se avanza. Si no, no se hace nada
         nivelSeleccionado = listaNiveles[indexNivelSeleccionado+1];
   }

   if (GUI.Button (new Rect (10, 95, 150, 30), "Atras")) { // Boton para retroceder
      int indexNivelSeleccionado = listaNiveles.IndexOf (nivelSeleccionado); // Posicion que ocupa el nivel en la lista
      
      if(indexNivelSeleccionado > 0) // Si el nivel seleccionado no es el primero, se retrocede. Si no, no se hace nada
         nivelSeleccionado = listaNiveles[indexNivelSeleccionado-1];
   }

   // Crea un boton para cargar el nivel seleccionado
   if (GUI.Button (new Rect (10, 130, 150, 30), "Cargar nivel")) {
      nivelSeleccionado.loadLevel ();
      Debug.Log ("Nivel cargado: " + nivelSeleccionado.getNombre() + "(" + nivelSeleccionado.getNumeroNivel() + ")");
   }
}
}• Nivel.cs (Objeto):
using UnityEngine;
using System.Collections;

/**
 * - Esta clase es nuestro nivel. No puede ser añadida a ningun objeto del juego, y por ende, no puede formar parte de la escena.
 * No obstante, se puede crear una instancia de esta clase escribiendo, en un atributo de tipo Nivel, new Nivel("Nombre", id)
 *
 * * El nombre es el nombre de la escena. Es recomendable que se ponga el mismo nombre que la escena
 *
 * * El ID es el numero de identificacion de la escena. Si vamos al editor de unity y entramos en
 * File > Build Settings..., podremos añadir una nueva escena, y asi poder cargarla. Asi pues,
 * el numero de identificacion es el numero que nos sale a la derecha de cada escena añadida
 */
public class Nivel {
private string nombre;
private int numeroNivel;

// Constructor de la clase Nivel
public Nivel(string nombre, int numeroNivel) {
   this.nombre = nombre;
   this.numeroNivel = numeroNivel;
}

// GETTERS & SETTERS
   // Getters..
public string getNombre() { // Metodo que devuelve el nombre del nivel
   return nombre;
}

public int getNumeroNivel() { // Metodo que devuelve el numero de identificacion del nivel
   return numeroNivel;
}

   // Setters..
public void setNombre(string nombre) { // Metodo que modifica el nombre del nivel por un nombre definido en el parametro
   this.nombre = nombre;
}

public void setNumeroNivel(int number) { // Metodo que modifica el numero de identificacion del nivel por un numero definido en el parametro
   this.numeroNivel = number;
}

// Metodos funcionales
public void loadLevel() { // Metodo para cargar este nivel
   Application.LoadLevel (numeroNivel+1); // Aqui lo cargamos con el identificador del nivel. Podemos hacerlo tambien con el mismo nombre, pero si existen dos niveles nombrados de igual manera, pueden haber errores.
}
}
Como he explicado en los comentarios de cada clase, debes añadir el script SeleccionNivel a un objeto cualquiera de la escena la cual será para cargar los diferentes niveles, además de que tendrá que existir al menos una cámara para poder renderizar el GUI.Para añadir diferentes niveles, primero deberás añadir la escena al Build, para poder cargarlas. Para ello, antes que nada debes abrir la escena que quieres guardar. Entonces, debes ir a "File > Build Settings...", y dentro, con la escena cargada, darle al botón "Add Current". Así se añadirá la escena al compilador. Una vez añadida, te saldrá un número a la derecha de la nueva escena: es el número de identificación. Con él puedes cargar cualquier escena (como se ha hecho dentro de la clase Nivel.cs, en el método loadLevel()').Para añadir una nueva escena al selector (al GUI de SeleccionNivel.cs), solamente tendrás que crear una nueva variable tipo Nivel en el método Start de la misma clase (por ejemplo, Nivel nivel3 = new Nivel("Nivel3", 2)) y añadirla a la lista mediante el método local "añadirNivel(Nivel)". Una vez hecho esto, el nivel será añadido a la lista de niveles seleccionables.Como se ha explicado en el comentario de la clase Nivel.cs, es recomendable que en el constructor Nivel(string nombre, int id) pongas como nombre el nombre exacto de la escena, y como id, el valor previamente nombrado (número de identificación del nivel).Espero que te haya servido de algo! [/quote]wow gracias, estas hecho un maquina, ojala y vea mas post tuyos de este estilo como me comentas!
#5
General (Antiguo) / Saludos gente!!
Septiembre 08, 2015, 01:34:33 PM
[quote author=iRobb" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="21744" data-ipsquote-contentcommentid="108084">Bienvenido Salva!Los propios videotutoriales de Unity son un muy buen comienzo. Haz un par de los proyectos que allí aparecen, como el shooter p.ej. También hay en 2D si quieres decantarte por ello.http://unity3d.com/es/learn/tutorials">http://unity3d.com/es/learn/tutorials [/quote]Gracias!, no lo conocía, me pasaré a verlo:D
#6
General (Antiguo) / Duda con OnMouseDown
Septiembre 08, 2015, 01:32:51 PM
[quote author=Edgargaza" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="21467" data-ipsquote-contentcommentid="108117">De nada, por supuesto. Para eso está la comunidad de UnitySpain! :rolleyes:
#7
General (Antiguo) / Saludos gente!!
Septiembre 06, 2015, 11:12:17 PM
Soy nuevo en esto del mundillo de Unity, los videojuegos han sido una cosa que siempre me han apasionado y me encantaba la idea de empezar a hacer el mio propioEspero que este foro y su gente me ayude a crecer para poder devolver el favor cuando sepa mas y echar yo una mano jajajajAprovecho la presentación para preguntar, ¿Me recomendais algún libro, serie de videotutoriales o algo para apoyarme? actualmente conozco la interfaz basica de unity, asi como lo basico de programacion en C# y Java, operaciones, arrays, funciones basicas...Lo básicoNos vemos por el foro!
#8
General (Antiguo) / Duda con OnMouseDown
Septiembre 06, 2015, 11:03:27 PM
Tengo poca idea de programacion, lo mas basico de lo basico, me informaré en lo que me comentais de GUI y a ver que pasa, muchas gracias por vuestro tiempo chicos 
[quote author=iRobb" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="21467" data-ipsquote-contentcommentid="107932">Diría que lo primero que deberían aprender es en pensar en componentes. Creo que vienen con pensamiento de código centralizado, o sea, código que tiene que distribuir y enviar mensajes a todo el UI centralizando todos los objetos p.ej.[/quote]Tengo poca idea de programacion, lo mas basico de lo basico, me informaré en lo que me comentais de GUI y a ver que pasa, muchas gracias por vuestro tiempo chicos :P
#9
General (Antiguo) / Duda con OnMouseDown
Septiembre 05, 2015, 05:30:02 PM
Saludos gente, soy muy novato por aqui en el tema de la creacion de videojuegos y tengo una duda, estoy haciendoo una especie de seleccion de nivel muy simple para un juego 2D, consiste en una imagen central que es un collider 2D para entrar al susodicho nivel y a ambos lados unas flechas para pasar a la pantalla del siguiente nivel y asi sucesivamente. El problema que se me presenta es que no se como hacer para que con un mismo script decirle a unity: diferenciame a que collider le hago click, si a la flecha o al nivel y actua en consecuencia"Gracias de antemano