Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Consejos para variables, y juego fluido

Iniciado por BennyDz, Octubre 17, 2015, 04:08:12 AM

Tema anterior - Siguiente tema
Hola amigos, estoy creando un juego de preguntas, ya tengo toda mi base, mi GUI, me falta meter mas graficos a la parte de las preguntas, ahora mi duda es la siguiente, tengo un script donde van las preguntas con una variable,  public class Preguntas1{   public static string[,] dic = new string[,]{
{"00101", "Final De La Primera Revolución Industrial", "Mediados del siglo XIX"}
,{"00405", "3 inventos de la 1er rev. industrial", "maquina a vapor, ferrocarril, maquina de hilar"}
    };
}public class Preguntas1{    public static string[,] dic = new string[,]{
{"00304", "Cual fue el invento de Alejandro Volta", "La Bateria"}
,{"00305", "Cual fue el invento de Alexander Graham Bell", "El Teléfono"}
    };
} Preguntas1Preguntas2 son las variables para elegir las preguntas, ustedes que usarían? un playerpref con string, al elegir nivel 1,2,3 etc o diferentes escenas?. para elegir las preguntas, si quiero cambiar los personajes y escenarios tendría que crear una escena para cada nivel me imagino, aunque si uso el mismo escenario y solo activar y desactivar objetos para que se vea diferente cada nivel, seria mas fluido me imagino sin cambiar de escena. Denme sus recomendaciones, otra duda que tengo, cuando estoy en la escena de mi menú principal y doy en botón de PLAY para cambiar a la escena del juego, da un poquito de freeze, como se evita eso? o como se puede ocultar? algún fade out o como? no es pesado mi proyecto, al exportarlo en mobil apenas pesa 15mb. saludos. y espero sus consejos y recomendaciones y de una ves aprovechando, si tienen algún material para leer de como usar personajes 3d. les agradeceria.    

No sé cómo lo has diseñado, pero usar una escena para cada pregunta...? No creo que sea lo más eficiente... además, tienes una clase para cada pregunta? Si todas las preguntas tienen el mismo formato, no sería más fácil hacer una clase pregunta y cambiar los datos?Cuando en un juego veas que cambian la pantalla, no quiere decir que siempre se cambie de nivel, puede que sólo cambien la interfaz...En cuanto a cómo usar personajes 3d: animation y animator controllerBuena suerte!!

[quote author=juanma_teso" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="31366" data-ipsquote-contentcommentid="119357">No sé cómo lo has diseñado, pero usar una escena para cada pregunta...? No creo que sea lo más eficiente... además, tienes una clase para cada pregunta? Si todas las preguntas tienen el mismo formato, no sería más fácil hacer una clase pregunta y cambiar los datos?Cuando en un juego veas que cambian la pantalla, no quiere decir que siempre se cambie de nivel, puede que sólo cambien la interfaz...En cuanto a cómo usar personajes 3d: http://docs.unity3d.com/Manual/AnimationOverview.html">animation y http://docs.unity3d.com/Manual/class-AnimatorController.html date=1445091662]animator controllerBuena suerte!![/quote]no amigo, escena para cada pregunta no, osea son 30 preguntas en el nivel 1, e irian otras 40 pregunts diferentes para el nivel 2 etc. y no es una clase para cada pregunta, es una clase para un nivel diferente. en cada clase puedo agregar las preguntas que quiera, para los diferentes niveles. me explico bro? en cada clase mi script elije una pregunta al azar y pone respuestas al azar.  yo pienso me ire por cambiar las clases en la misma escena y asi haga preguntas de diferentes temas cuando pases de nivel para que sea mas fluido.  

Entonces había entendido mal. Podrías meter todas las clases en un GO vacío y activar sólo la clase del nivel en que estés, así no haría falta que cambiases de nivel.

No entendido muy bien de que vala cuestion, pero entiendo que quieres hacer una clase por cada nivel de dificultad, entonces ituliza randon,range para elegir un valor aleatorio dentro de las preguntas y almacenar ese valor en un array de datos para que si lo detecta de nuevo lo vuelva a repetir al valor, utiliza randon.value.discúlpame si me equivoco pero es que no alcance  comprender del todo.

Si en todas las escenas usas la misma clase deberias usar herencia, o un metodo que te devuelva las preguntas segun la escena, porque se me queman los ojos si veo algo asi xD jaja
Tambien es aconsejable usar xml

ps esq de hecho, pongo en una clase las 30 preguntas del primer nivel, despues en otra clase 40 preguntas del 2do nivel.mi script lee segun la clase, da las preguntas al azar con sus respuestas xD! creo que usare solo algun playerpreft de string para q cambie la clase que debe leer xD! 

Pero como dice GSG3D, no utilices las clases de forma tan bruta. Una clase con pregunta y posibles respuestas, una lista de esa clase en otra clase que "lea" de algún sitio los datos, sea texto, xml, bbdd o servicios web. Lo asignas y puedes cambiar externamente todo, sin tocar el código.

Creo que no me entendiste, el codigo en si funcionara, pero en grandes proyectos esto seria un gran error por sobre todo en cuanto a legibilidad.

Octubre 18, 2015, 06:22:53 AM #9 Ultima modificación: Octubre 18, 2015, 06:23:41 AM por BennyDz
se refieren ha poner como los datos de las preguntas online? y que no vayan en la compilación para poder modificarlas desde fuera? pues no creo que sea necesario, ya que es un mini proyecto, mini juego interactivo de conocimientos. las preguntas van en un script aparte que seria como la data de las preguntas de los niveles. o pues nose diganme si no los estoy entendiendo jej  mi script de data va algo asi: using UnityEngine;
using System.Collections;/// <summary>
/// Demo Data, Preguntas Data Array.
/// </summary>
public class Nivel1{
    public static string[,] dic = new string[,]{
{"00101", "Final De La Primera Revolución Industrial", "Mediados del siglo XIX"}
,{"00102", "Inicio De La Primera Revolución Industrial", "Finales del siglo XVIII"}
,{"00103", "Donde comenzó la primera revolución industrial", "Inglaterra"}
,{"00104", "Inicio De La Segunda Revolución industrial", "Mediados del siglo XIX"}
,{"00105", "En qué año se inventa la máquina de vapor", "1768 - 1769"},{"00201", "Quien invento la máquina de vapor", "James Watt"}
,{"00202", "Quien desarrollo el primer barco de vapor", "Robert Fulton"}
,{"00203", "Quien inventa la máquina de hilar", "James Hargreaves"}
,{"00204", "Quien construye la primera locomotora de vapor", "Richard Trevithick"}
,{"00205", "Es el pionero más exitoso del ferrocarril", "George Stephenson"},{"00301", "En qué año se construye la primer locomotora fiable?", "1821"}
,{"00302", "En que año se invento la máquina de hilar", "1764"}
,{"00303", "Cual fue el invento de Samuel Morse", "El Telegrafo"}
,{"00304", "Cual fue el invento de Alejandro Volta", "La Bateria"}
,{"00305", "Cual fue el invento de Alexander Graham Bell", "El Teléfono"},{"00401", "Cual fue el invento de Orville y Wilbur Wright", "Primer vuelo sustentable"}
,{"00402", "Cual fue el invento de Karl Benz", "Automóvil a gasolina"}
,{"00403", "Cual fue el invento de Thomas Alva Edison", "Lámpara incandescente"}
,{"00404", "3 inventos de la 2da rev. industrial", "Automóvil a gasolina, Teléfono, Cine"}
,{"00405", "3 inventos de la 1er rev. industrial", "maquina a vapor, ferrocarril, maquina de hilar"}
    };
}
public class Nivel2{
    public static string[,] dic = new string[,]{
{"00101", "preg1", "res1"},{"00405", "preg2", "res2"}
    };
}  el script manager que las lee, empieza asi, son de cambia en donde dice "Nivel1" por "Nivel2" para que cambie a las preguntas del nivel 2. 
solo tengo que poner una variable ahi, que cambie al detectar que cambio de nivel.. void QuizInit()
    {
        quizList = new List<QuizData>();
        List<string> champs = new List<string>();
        string[,] dic = Nivel1.dic;
        for (int i = 0; i < dic.GetLength(0); i++)

  ahora me dicen mucho que esta mal usar clases, da lag o frezee o algo asi? o en que otra forma podrian ir las preguntas? porque otra idea que se me ocurre esque se escriban en inspector con un String; pero ahi seria necesario estar cambiando de escena. 

Mal usar clases? Quién (un profesor?) y porqué dice eso?

Coincido con @iRobb y @GSG3D, es lo que te decía en el primer post, si tienes preguntas que todas van a tener los mismos datos, es mejor usar una sola clase, ésa es la idea de clase, "es como un molde" me decían a mí 

Haz una clase para cada pregunta, asi sabras en cada una la clase que le corresponde; y siguiendo con la misma politica, no te has planteado hacer tambien una clase para cada respuesta de cada pregunta ? ... 100 preguntas, con 3 respuestas cada una te saldria la poca cosa de 400 clases distintas xD

Siguiendo con lo de @juanma_teso, para afinar. El id no es necesario ya que se cargarán en orden desde el txt. Respuestas sería un array con todas y un id del array respuestas para la correcta. También puedes poner  en el array txt que la primera sea la correcta siempre y luego mostrar las respuestas de manera aleatoria.

Etiquetas: