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 - francoe1

#451
Creo que el error está en el mal uso de las corrutinas, por porque no implementar un sistema de corrutinas para tu juego, no es algo dificil es una tonteria, y podrias hacer un sección de pausa.
 


private IEnumerator UpdateCorrutine(IEnumerator myCorrutine)
{
if(Game.IsPause) yield return null;
if(myCorrutine.MoveNext())
.....
}

 
Busca en internet como funcionan los IEnumerator, luego podrás crear un sistema de corrutinas con pausas integradas, hasta podrias indicarle a las corrutinas si quieres que se pausen o no.
#452
General (Antiguo) / BuildNetworkGame
Mayo 13, 2017, 03:26:38 PM
Primero deberías obtener la versión del cliente. 
 

string assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString();
string productVersion = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).ProductVersion;

 
Luego en el servidor deberías crear un arreglo de versiones compatibles.
 

private string[] m_compatible_versions = new string[3] {"V1.0.1", "V1.0.2", "V1.0.3"}

 
Por ultimo cuando el cliente se conecta envía su versión y hasta recibir la respuesta queda en un estado de conectando.
 
 
 
Estoy viendo que existen muchas personas interesadas por este tema del networking, pronto subiré material a mi canal de youtube si estas interesado suscribete.
#453
Esto emociona a todos los usuarios que estamos hace tiempo dentro de la comunidad, dando el mejor esfuerzo para que sea de esta un buen lugar para aprender, enseñar y pasar un buen momento.
 
 
 
Felicitaciones :)
#454
Esto es algo que sucede muy a menudo, se trata de saber programar y referenciar las cosas, para hacerlo simple te dejo ejemplo de como lo haría
 

public static class GameData
{
public const int INIT_HEALTH = 100;
public const int INIT_SCORE = 0;
public static int Health {get; private set;}
public static int Score {get; private set;}
public static void Restart()
{
   Health = INIT_HEALTH;
   Score = INIT_SCORE;
}
    public static void AddScore(int amount)
    {
   Score += amount;
    }
public static bool TakeDamage(int amount)
{
   Health -= amount;
   Health = Mathf.Clamp(Health, 0, INIT_HEALTH);
   return Health == 0;
}
}

 
Esta clase al ser estática no necesita instancia ni referencia.
 
Para usarla por ejemplo desde la función Start solo necesitas hacer lo siguiente
 

private void Start()
{
GameData.Reset();
GameData.AddScore(100);
GameData.TakeDamage(10);
}

 
Saludos...
#455
Cita de: pioj date=1492188973Muy bonito, pero por favor, se ruega respetar el formato clásico del texto en los mensajes, para una mayor claridad de lectura para el resto de los usuarios. Muchas gracias.
   


Jajajajajaja, estaba de arte....
#456


   Soluciones, Proyectos y Referencia


   No se trata de sub proyectos, son proyectos independientes que están relacionados y pertenecen a una solución, es decir uno o un conjunto de proyectos pertenecen a una solución. Los proyectos dentro de una solución pueden o no estar "relacionados". En el caso de unity la solución puede contener varios proyectos.


   Aca te dejo una referencia de los mismos: http://wiki.unity3d.com/index.php/Special_Folder_Names_in_your_Assets_Folder


   ¿Porque varios proyectos?


   En muchos lugares varios proyectos se llaman capas, existen diferentes tecnicas de programacion por capa como lo son el modelo vista-controlador, modelo-negocio, etc. Estos tipos de "Soluciones" cuentan con 3 o más proyectos, por ejemplo en el modelo vista-controlador se encuentra 3 proyectos.


   -vistas -datos -controles


   En unity pasa exactamente lo mismo, cuando creamos un "Proyecto de Unity" se nos crea una "Solución" la cual podemos trabajar con Visual Studio, MonoDevelop, etc.(TODOS LOS "IDE" FUNCIONAN DEL MISMO MODO).


    


   ¿Cuando se crean más proyectos?


    


   se crean mas proyectos cuando unity lo requiere, existen casos concretos, por ejemplo, podemos vamos a programar un Plugin's nativamente para Windows, entonces podemos ubicarlo dentro de "Assets/MiCarpeta/Plugins/Windows/script.cs", automáticamente esta estructura de carpeta indica a unity que debe crear un proyecto nuevo, lo mismo sucede cuando utilizamos el Editor personalizado. "Assets/MiCarpeta/Editor/script.cs".


   En el caso de Plugins se añadirá a la solución un nuevo proyecto "Plugins", lo mismo para el caso de "Editor".


    


   ¿Cómo se comunican dos proyectos?


    


   La comunicacion entre proyectos se llama referencias, vamos a un ejemplo. Tenemos una solución que contiene 2 proyectos, A y B, ahora dentro del proyecto A tenemos una clase que se llama Player y dentro de B otra llamada Enemigo entonces: A.Player - B.Enemigo las dos clases se encuentran en diferentes proyectos entonces necesitamos crear la referencia.


    


   Para agregar una referencia en Visual C#:

   1º  - En el Explorador de soluciones, haga clic con el botón secundario del mouse en el nodo del proyecto y seleccione Agregar referencia.

   2º - En el cuadro de diálogo Agregar referencia, seleccione la ficha que indique el tipo de componente al que desea hacer referencia.

   3º - Seleccione los componentes a los que desee hacer referencia y haga clic en Aceptar.


    


   Una vez creada la referencia de la clase B en A, es decir, ahora A puede acceder a B pero B no puede acceder a A pero si agregariamos las referencias en los dos proyectos entonces esto funcionaria. 


   Ahora desde cualquier clase del proyecto A podemos acceder a la Clase enemigo que se encuentra en el proyecto B.


    


   
      Nota: Cuando no se utilizar namespace el espacio de nombre por defecto es el nombre del proyecto, en el ejemplo anterior los espacios de nombre para Player es A y para Enemigo es B.
   
   
       
   
   
      Soluciones
   
   
      1º A.Player 
   
   
       
   
   
      2º using A;
   
   
       
   


    
#457
Efectivamente el problema es de los espacios de nombre..
 
Pero más que nada presiento que estás teniendo un error de referencias ¿Todos los script pertenecen al mismo proyecto?. Por ejemplo cuando utilizas Unit***itor, necesitas colocar el script dentro de una carpeta nombrada "Editor" y a su vez todos los script que se encuentren dentro de una carpeta "Editor" pertenecen a un proyecto independiente a los UnityEngine... (Explicación cutre).
 
La única razón por la cual este surgiendo este problema es que estés trabajando con proyectos no relacionados mediante referencia.
 
 
 
La clase GrounderFBBIK pertenece efectivamente a otro proyecto.. Terrain.Plugins a esto me refería, estás teniendo errores de referencia.
#458
General (Antiguo) / Obtener imagen de xml
Abril 02, 2017, 03:23:39 PM
¿Donde esta el error? 
 
- Al parecer la lógica está muy bien el unico error que estoy notando es 

Aca esta tomando un componente pero nunca haces uso de él.
 

newButton.GetComponent<AppButton>();

 
Aca no encontramos con otro, estas asignando el sprite directamente al componente "Button", por eso no se visualiza el cambio, debería realizar el cambio al componente "Image"
 

newButton.image.sprite = imageSprite;

 
Creo que eso son los errores.
 
Otra cosita por las dudas ¿La función "public Texture2D Texture(string Path)" no te está devolviendo null siempre? si es asi podrias tener un error con la ruta de la imagen.
#459
El editor de Unity al igual que el juego compilado da errores de FPS cuando se hace uso de Debug's ... corrobora esto..
#460
General (Antiguo) / Ventana Exit?
Marzo 30, 2017, 05:58:33 PM
Pero esto no es algo que amerite cargar una escena nueva.
 
Estoy viendo que estás teniendo muchos problemas pero al menos tienes ganas de aprender. Vamos por parte-
 
1º Aprender a programar, esto te va a ayudar a desarrollar todo lo que tengas en tu cabeza.
 
2º Buscar ejemplos o situaciones similares al problema en otros proyectos para aprender de ellos.
 
3º Buscar optimizar siempre las tareas.
 
Ahora tu problema se soluciona haciendo uso de un GameManager, supongo no lo tienes, es decir cuando un cliente quiere salir desplegará un menú para preguntarle, pero a la misma vez le avisara al GameManager que el no esta activo actualmente, para que el juego se detenga hasta saber su decisión.
#461
General (Antiguo) / foreach de prefabs
Marzo 30, 2017, 05:45:38 PM
vas a tenes que aprender a utilizar XML y lógicamente a programar un poquito más.
 
Primero necesitas un Prefabs de los Botones.
 
Segundo Podrías utilizar Resources.Load para recuperar una imagen por su ruta.
 
Tercero para llamar al init simplemente 
 

newButton.GetComponent<AppButton>().Init();

 
 
#462
General (Antiguo) / C# Desesializar xml
Marzo 29, 2017, 05:50:05 PM
Armar un XML para luego tratarlo como una cadena de letras es algo absurdo.
 
Busca sobre XmlNode, Child, Root, Parent y toda la jerarquía y trata de entender cómo funciona.
 
https://msdn.microsoft.com/es-es/library/system.xml(v=vs.110).aspx
https://msdn.microsoft.com/es-es/library/system.xml.xmldocument(v=vs.110).aspx
 
 
#463
General (Antiguo) / Joystick virtual problema
Marzo 29, 2017, 05:42:29 PM
Te dejo un link a mi blog donde tenes una herramienta muy útil para crear un Joystick Virtual.
 
http://unitydoc.blogspot.com.ar/2016/03/joystick-virtual-todas-las-plataformas.html 
 
 
#464
Existen dos cosas que puedes realizar, o iniciar el compilado con un comando para que no inicie gráficamente si no en modo consola.
 
Abrir un CMD en la ruta del build y colocas: nombredelbuild.exe -batchmode 
 
otra solucion seria capturar el evento que se acciona después de realizar un log.
 

void Start()
{
Application.logMessageReceived += OnLog;
}
void OnLog(string msg, string trace, LogType t)
{
// Guardar log en  para visualizarlo del modo que quieras...
}

 
No se que otra cosa se me ocurre por el momento.
#465
Entretienete aprendiendo conceptos primero.
 
Prefabs: Objecto que no se encuentra dentro de una escena, si no más bien como asset un inactivo.

GameObject: Object que se encuentra dentro de una escena, por lo general cuentan con el componente Transform
 
La pregunta seria. ¿Cómo puedo reemplazar un GameObject por otro?
 
Ahora explicar esto que es sumamente simple puede ser complicado si no entiendes nada de programacion, y  por la complejidad de la pregunta deduzco que no sabes absolutamente nada (Sin ofender).
 
Te dejo un poco de código para que investigues y trates de hacerlo por tus medios.
 

public GameObject MisPrefab;
private void OnRayCast()
{
//Lanzar rayoo
//Detectar Colision
OnReplaceObject(colision.gameObject, MisPrefab)
}
private void OnReplaceObject(GameObject a, GameObject to)
{
//Mantener en variable todos los valores de interes del Objeto a.
DestroyInmediate(a);
Instantiate(b)
//Setear todos los valores que anterioirmente tomamos en el objecto b.
}