Noticias

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

Problemas con codigo

Iniciado por kalm97, Mayo 08, 2016, 05:19:39 PM

Tema anterior - Siguiente tema
Mayo 08, 2016, 05:19:39 PM Ultima modificación: Mayo 08, 2016, 07:47:39 PM por pioj
Tengo un problema con este codigo, quiero que se pueda realizar con un bool pero sin que se crashee
private AsyncOperation oo;
    public bool Open = false;
    public bool WithCollider;
    public int levelToLoad;
    void Start () {
   
    }
   
    void OnGUI()
    {
        if (Open) {
            if (GUI.Button(new Rect(Screen.width / 2 - 100, Screen.height / 2 - 15, 200, 30), "Load Level"))
            {
                oo = SceneManager.LoadSceneAsync(levelToLoad);
            }
            if (oo != null)
            {
                GUI.Box(new Rect(0, Screen.height - 40, oo.progress * Screen.width, 40), "");
            }
        }
    }
cada vez que le pongo un bool en vez de
Probe haciendo asi:
void Update (){
   if(Open){
     oo = SceneManager.LoadSceneAsync(levelToLoad);
   }
}
pero al cargar me ase una cosa media rara y no se como areglarlo si alguien pudiera pobrar el codigo y ayudarme me arian un favor grandisimo

pero al cargar me ase una cosa media rara y no se como areglarlo[/quote]Por favor, indica el error en detalle o no te podremos ayudar. Y antes de eso, asegúrate de que los ejemplos del SceneManager.LoadSceneAsync funcionan tal como lo estás haciendo en tu código. 

Esq no me pone ningun error solo que cuando acaba de cargar el nivel la camara tambalea o vibra bastante por alguna razon y despues me brinca este error Assets/Scripts/LoadLevel.cs(7,28): warning CS0414: The private field `LoadLevel.oo' is assigned but its value is never used y este error no me sale de la otra manera  

Mayo 09, 2016, 12:03:54 AM #3 Ultima modificación: Mayo 09, 2016, 12:14:07 AM por farenhai
Sólo te dice que el campo LoadLevel está definido, pero que no lo estás usando en niguna parte. Si no sabes inglés, intenta hacer uso de algún traductor en el que apoyarte, que si no volvemos locos (me incluyo) a los que saben con cosas que ni siquiera son un problema  La pregunta es: se te cuelga la máquina? Tienes algún loop en alguna parte? Si es así, es posible que no hayas definido una salida del loop y por eso te cuelga.. Dicho esto, no sé si es necesario (y que sea por eso que se cuelga) que establezcas que Open == true, por aquello de que no estás definiendo (salvo que se dé por definida directamente) si open es true o false, y la máquina se haga un lío...  (Open == true == false??? no sé si me explico; no puede ser ambos valores a la vez, o una cosa o la otra; pero de alguna manera creo que es lo que estás haciendo de este último punto no estoy seguro, pero no pierdes nada por cambiarlo..

Mayo 09, 2016, 12:04:02 AM #4 Ultima modificación: Mayo 09, 2016, 12:13:48 AM por farenhai
Sólo te dice que el campo LoadLevel está definido, pero que no lo estás usando en niguna parte. Si no sabes inglés, intenta hacer uso de algún traductor en el que apoyarte, que si no volvemos locos (me incluyo) a los que saben con cosas que ni siquiera son un problema  La pregunta es: se te cuelga la máquina? Tienes algún loop en alguna parte? Si es así, es posible que no hayas definido una salida del loop y por eso te cuelga.. Dicho esto, no sé si es necesario (y que sea por eso que se cuelga) que establezcas que Open == true, por aquello de que no estás definiendo (salvo que se dé por definida directamente) si open es true o false, y la máquina se haga un lío.. (Open == true == false??? no sé si me explico; no puede ser ambos valores a la vez, o una cosa o la otra; pero de alguna manera creo que es lo que estás haciendo ). de este último punto no estoy seguro, pero no pierdes nada por cambiarlo..

no se me cuelga el ordenador y  si se q me dise el error lo que no es cuando ago void OnGUI()
    {
        if (Open) {
            if (GUI.Button(new Rect(Screen.width / 2 - 100, Screen.height / 2 - 15, 200, 30), "Load Level"))
            {
                oo = SceneManager.LoadSceneAsync(levelToLoad);
            }
            if (oo != null)
            {
                GUI.Box(new Rect(0, Screen.height - 40, oo.progress * Screen.width, 40), "");
            }
        }    }todo normal pero cuando ago esto void Update()
    {
        if (Open) {
                oo = SceneManager.LoadSceneAsync(levelToLoad);    }carga el siguiente nivel y me tambalea la camara durante un instante y no se porque

No dire que aprendas programacion porque supongo que eso al final acaba siendo muy cansino. Pero si no quieres aprender programacion, que minimo que aprender el funcionamiento que tienen las funciones de la clase MonoBehaviour ? Cuesta creer que sepas eso, y al mismo tiempo digas te hace un efecto raro al poner ese codigo ...A parte de eso, y solo como observacion al margen del tema, es curioso ver que aun hay quien utiliza la funcion OnGUI

Uso OnGui para la barra de carga, porque mis conocimientos de programacion siguen siendo basicos, y si eres un experto en vez de hacer un comentario de tal magnitud de ridicules pudiste responder ayudando porque para eso es la pagina para ayudar a personas con sus problemas relacionados a Unity, no te ubiera costado desirme es asi como se hace te produce ese error por tal razon no te parese

Si dices que el foro es para ayudar a las personas con sus problemas con Unity, lo cierto es que no podria estar mas de acuerdo.Si dices que el foro es para enseñar programacion o resolver dudas que tienen que ver algo con algo tan basico como el funcionamiento de las funciones de la principal clase de Unity como es MonoBehaviour (esto ultimo muestra el gran esfuerzo realizado por aprender) ... pues no podria estar mas en desacuerdo, no obstante respeto tu punto de vista aunque tenga mis dudas de si llevan muy lejos.Sobre el hecho de que alguien califique mi comentario como "comentario de tal magnitud de ridicules" al mismo tiempo que esa persona escribe palabras como "ridicules", "ubiera", "desirme" o "parese" ... no hare ningun tipo de comentario.P.D. lo mas gracioso es que te dije donde tienes el error y a eso yo le llamo ayudar ... deberias buscar esa palabra en el diccionario, porque ayudar no significa darlo todo hecho. No soy el profesor de nadie para estar corrigiendo y mucho menos enseñando a alguien que no se ha molestado en aprender lo mas minimo. Un abrazo y suerte

Etiquetas: