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

#61
Interfaz / Eventos de animación (SOLUCIONADO)
Febrero 12, 2020, 10:53:57 AM
Capturando el evento desde un componente que tenga como referencia una propiedad de AnimatorController, asignas el delegado o método que corresponda. 
 
 
 
Si no entendés, anda a la documentación de Unity. 
#62
Scripting / 3 objetos random
Febrero 12, 2020, 10:48:23 AM
Cita de: iRobb date=1581489493Ostras, que buena manera @francoe1. Mucho más elegante que ir haciendo remove de una list. Así no hay que crear la list cada vez con el contenido.
   


Aparte es aplicable a IList y IArray lo cual lo hace bastante versátil, es muy importante pensar en GC, por esa razón el objeto random lo cambiaría por Random.Range de Unity. Sacarlo como un propiedad de la clase no debería de funcionar, hasta donde se, es improbable que random repita un valor
#63
Scripting / 3 objetos random
Febrero 11, 2020, 03:16:47 PM
Es recomendable utilizar una extensión de IList que soluciones el problema, no por rendimiento, si no para mantener orden y que el código se más fácil de leer. 
 

public static class System.Generic
{
    public static void Shuffle<T>(this IList<T> list)  
    {  
        Random random = new Random();  
        int n = list.Count;  
        for(int i= list.Count - 1; i > 1; i--)
        {
            int rnd = random.Next(i + 1);
            T value = list[rnd];  
            list[rnd] = list[i];  
            list[i] = value;
        }
    }
}

 
De este modo puede utilizar la extensión en cualquier lista dentro del código.
 

private void SetData(List<Item> items)
{
items.Shuffle();
}

 
 
#64
Interfaz / Duda resoluciones - Canvas Scaler
Febrero 11, 2020, 03:08:03 PM
El CanvasScaler es un componente que "ajusta" los límites (xMin, xMax, yMin, yMax), no tiene ninguna relación con el proceso de renderizado, si queres que no se renderize lo que está fuera de esos límites podes usar un RectMask2D.
 
Solo basta utilizar 1 Canvas Scale en el Root, no seguir anidando.
#65
Otros / Build Setting no compila?
Febrero 11, 2020, 03:04:03 PM
¿Podes subir fotos del error? o .log del build.
 
Podes estar teniendo un problema de orden de llamada, por esta razón existen 2 funciones de inicio, 1 que se llama Awake que vendría a "simular" el constructor de la clase para los componentes de Unity y otra la función Start que se llama después de Awake. 
 
Todas las asignaciones públicas estáticas se deben realizar en la función Awake , mientras que el resto permanecer en Start, de este modo cada vez que hagas referencia a X componente desde cualquier función que no sea Awake no vas a tener el error de orden de llamada.
#66
Otros / Build Setting no compila?
Febrero 11, 2020, 12:02:28 AM
Remplaza únicamente el GameObject.Find por un reference estática a la instancia del jugador, cuánto menos cosas dejes al azar mejor funcionará. 
#67
Otros / Build Setting no compila?
Febrero 10, 2020, 04:29:04 PM
Si, prueba crear un build en modo debug y conectar el Profiler con el dispositivo, de ese modo tendrías la información de la ejecución en el editor.
 
Si esto te suena complicado podrias eliminar el archivo de DEBUG.LOG del compilado y Abrirlo para que se escriba nuevamente el error, luego abres el LOG y tendrás una descripción específica del error mediante StackTrace.. 
 
También puede calibrar la sensibilidad del debug desde Player Setting en el editor de Unity antes de compilar.
 
 
 
Deberías verificar que todo lo que estés usando es compatible con la plataforma de destino, tenes que tener en cuenta que algo puede no funcionar después de compilar si se usó una directiva de compilación, como por ejemplo.
 

#IF UNITY_IOS
public Texture2D Textura
#ENDIF

 
Intenta seguir los pasos en orden.
#68
Proyectos / [Asset Store] CGLocalization
Febrero 10, 2020, 01:10:31 PM
Cita de: iRobb date=1581325295Buen trabajo.
   
   
      Yo hice el mío hace tiempo, seguro que no tan atractivo visualmente como el tuyo aunque práctico. Una de las características que le añadí es qué, en vez de editar un archivo de texto y que la información de los idiomas fuera estática, es vincularlo con una BBDD de Firebase. De este modo hay dos ventajas:
   
   
      1. Se descarga solamente el idioma que proceda en su momento (o en opciones si se cambia).
   
   
      2.  Puede editarse externamente sin recompilación del app. No añadir nuevos pero si modificar los datos existentes.
   
   
      Saludos
   


Es una buena idea, aunque puedes tenes tus archivos XML hospedados y realizar cambios, esto funciona tanto para un usuario offline como online. Pero la idea no me pareció mal.
 
Este assets tambien integra la posibilidad de trabajar con otros componentes externos a texto, como audio, gameobjects, texturas, etc.. Está más orientado a una solución Profesional.
 
Gracias!
#69
Otros / Build Setting no compila?
Febrero 10, 2020, 12:33:32 AM
Para estas cosas es mejor trabajar con Singleton y estados.
 
1 - definir qué información nos es persistente, esto quiere decir la que reinicia cada vez que el jugador se genera (spawn), crear un clase con esta información para facilitar el reinicio.
 

public class PlayerInformation
{
public int Score;
public int Health;
}

 
2 - crear un singleton del componente que administra el jugador, de esta forma evitas utilizar funciones de búsquedas arbitrarias.
 

public class PlayerManager : MonoBehaviour
{
public static PlayerManager Instance { get; private set; }
     public PlayerInformation Information { get; private set; }
private void Awake()
{
   Instance = this;
}
 
    public void Respawn()
    {
         Information = new PlayerInformation();
    }
}

 
3 - definir los estados del jugador.
 

public enum PlayerState
{
Empty,
Alive,
Dead
}

 
Lo demás queda a imaginación --- 
 
El problema de referencias nulas en estos casos son por abordar mal ciertos patrones de diseños, intenta seguir algo como lo que te explique, y evita a toda costa destruir objetos, te diría que no lo hagas, olvídate de esa función por el momento. 
#70
Scripting / Simulación de children transform
Febrero 09, 2020, 01:46:54 PM
Te recomiendo seguir utilizando los objetos anidados, para eso se creó el componente Transform,  de lo contrario deberias recrear un componente similar lo cual no vale la pena.
#71
Scripting / Limitar el valor de una variable?
Febrero 08, 2020, 10:58:53 PM
Cita de: nomoregames date=1581197261Buenas
   
   
      francoe ,trato de entender tu script, pero no se para que sirven set, return y get, serias tan amable de explicar el funcionamiento... 


Un campo es una variable que se declara directamente en una clase o estructura. Una clase o estructura puede tener campos de instancia o campos estáticos o ambos. En general, debe usar campos solo para variables que tengan accesibilidad privada o protegida . Los datos que su clase expone al código del cliente se deben proporcionar a través de métodos, propiedades e indexadores. Al utilizar estas construcciones para el acceso indirecto a los campos internos, puede protegerse contra valores de entrada no válidos.
 
Ejemplo
 

public class MiClase
{
public float MiCampo = 0;
}

 
Una propiedad es un miembro que proporciona un mecanismo flexible para leer, escribir o calcular el valor de un campo privado. Las propiedades se pueden usar como si fueran miembros de datos públicos, pero en realidad son métodos especiales llamados accesores . Esto permite acceder fácilmente a los datos y aún así ayuda a promover la seguridad y flexibilidad de los métodos . Las propiedades permiten que una clase exponga una forma pública de obtener y establecer valores, al tiempo que oculta el código de implementación o verificación. Se utiliza un descriptor de acceso de propiedad get para devolver el valor de la propiedad, y un descriptor de acceso set se utiliza para asignar un nuevo valor.
 
Ejemplo
 

public class MiClase
{
private float m_miPropiedadValue = 0;
public float MiPropiedadBidireccional { get; set;}   
public float MiPropiedadUnidireccionalGET { get { return m_miPropiedadValue; } }
public float MiPropiedadUnidireccionalSET { set { m_miPropiedadValue = value; } } //VALUE es el valor que se le esta asignando a una variable.
}

 
Entonces podemos decir que un campo es la forma de representar libremente una variable. Mientras que una propiedad es un forma de enmascarar un campo o valor, las propiedades tambien se pueden utilizar para realizar cálculos u otra combinación de información.
 
Ejemplo
 

public class PlayerStatistics
{
  public int Defense;
  public int Attack;
  public int Velocity;
 
  public int Range { get { return (Defense + Attack + Veloctiy) / 3; } }
  //Desde la versión 4.7 de C# se pueden utilzar las arrow propertys
  //La desventaja es que solo son para propiedades de solo lectura.
  public int Range => (Defense + Attack + Veloctiy) / 3;
}

 
Aparte de esta explicaciones básica existe diferencias en el MSIL pero esto ya es más técnico.
#72
Scripting / Limitar el valor de una variable?
Febrero 08, 2020, 10:14:18 PM
El uso de Mathf.Clamp es correcto, pero si vas a asignar la variable desde múltiples lugares te recomiendo utilizar propiedades.
 

private float m_value = 0;
public float Value { get {return m_value;} set { m_value = Mathf.Clamp(m_value, 0, 1);} }

 
De este modo cada vez que asignes Value se va a aplicar la limitación.
#73
Otros / Build Setting no compila?
Febrero 08, 2020, 10:11:01 PM
Podrias compartir los errores o el archivo de debug del compilado.
 
Esto puede deberse a que estas utilizando funciones que solo están disponible en una plataforma y/o el editor y por esta razón está generando errores el compilado.
#74
Offtopic / Documentación (html) online a offline
Febrero 08, 2020, 04:02:26 AM
Jajaja --- 
 
Es ese link, exactamente en #gitbook-style (pegalo al final del link :])
 
En lo personal hay varios software para "documentación técnica", si bien es cierto que Markdown acelera mucho el proceso, tambien tiene muchas limitaciones.
 
Estoy buscando un programa que programe hace un tiempo para generar un Single Page con .md siguiente la estructura de carpeta, era una boludes el programa, pero no me acuerdo en lenguaje lo hice, creo que python... si lo encuentro lo comparto.
 
El software que usaba y uso para escribir los .md es ... Zettlr que de hecho ahora está bastante actualizado, creo que usaban LaTex para la exportación. 
 
 
#75
Offtopic / Documentación (html) online a offline
Febrero 08, 2020, 02:32:33 AM
@lightbug Felicitaciones por la documentación, te quedo excelente, la lei solo por ser agradable a la vista.
 
En cuanto a tu pregunta.... intentaste con lo siguiente?
 
Please note that if you change self_contained = TRUE to make self-contained HTML pages, the total size of all HTML files can be significantly increased since there are many JS and CSS files that have to be embedded in every single HTML file.
 
Besides these html_document() options, gitbook() has three other arguments: split_by, split_bib, and config. The split_by argument specifies how you want to split the HTML output into multiple pages, and its possible values are:
 


  •    rmd: use the base filenames of the input Rmd files to create the HTML filenames, e.g., generate chapter3.html for chapter3.Rmd.


  •    none: do not split the HTML file (the book will be a single HTML file).


  •    chapter: split the file by the first-level headers.


  •    section: split the file by the second-level headers.


  •    chapter+number and section+number: similar to chapter and section, but the files will be numbered.