https://assetstore.unity.com/packages/tools/integration/android-native-pro-125691 Mira este, estaba buscando la versión NO PRO. por que esta PRO tiene algunos problemitas.. Pero sin embargo puedes mirarla y probar si te va.
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.
#152
Scripting / Ayuda con Raycasts!
Enero 25, 2019, 12:27:22 AM
Todos los IF estan bien, el problema que presentas es ASIGNACIÓN de VARIABLES que no se están utilizando.
La variable "b" la declaras dentro del bloque del IF, por lo que si no la utilizas en el mismo ámbito entonces te dará un Warning. "La variable 'b' se asignó pero nunca se uso"
IF, FOR, WHILE, FOREACH y algunas características más no requieren delimitar el bloque (BLOQUE: es todo aquello que se encierra en 2 llaves), es más los bloques funcionan por sí solo. Siempre y cuando estemos hablando de una línea.
Ejemplo de USO de bloques en cualquier lugar.
La variable C es local, quiere decir que solo puede ser utilizada dentro de la función UPDATE. Las variables a y b, pertenecen a un bloque de código, gracias a esto podes tener lógicas separadas dentro de una misma función.
Saludos.
La variable "b" la declaras dentro del bloque del IF, por lo que si no la utilizas en el mismo ámbito entonces te dará un Warning. "La variable 'b' se asignó pero nunca se uso"
IF, FOR, WHILE, FOREACH y algunas características más no requieren delimitar el bloque (BLOQUE: es todo aquello que se encierra en 2 llaves), es más los bloques funcionan por sí solo. Siempre y cuando estemos hablando de una línea.
//Ejemplo 1 - Sin bloque
if (a > b)
Debug.Log("A win");
//Ejemplo 2 - Con Bloque
if (a > b)
{
Debug.Log("A win");
}
Ejemplo de USO de bloques en cualquier lugar.
private void Update()
{
float c = 1;
//BLOQUE 1
{
float a = 0;
float b = 1;
Debug.Log("Bloque 1 => " a + b * c);
c++;
}
//BLOQUE 2
{
float a = 0;
float b = 1;
Debug.Log("Bloque 2 => " a - b * c);
}
}
La variable C es local, quiere decir que solo puede ser utilizada dentro de la función UPDATE. Las variables a y b, pertenecen a un bloque de código, gracias a esto podes tener lógicas separadas dentro de una misma función.
Saludos.
#153
Otros / Unity Google Play + AdMod
Enero 24, 2019, 06:30:48 PM
Deberías corroborar el archivo - AndroidManifest.xml
En Assets Store existen varias herramientas para solucionar esta clase de problemas.
En Assets Store existen varias herramientas para solucionar esta clase de problemas.
#154
Otros / Unity Google Play + AdMod
Enero 24, 2019, 04:50:26 PM
@PereMartra Interesante tu WordPress, me quede leyendo los blog sobre Jugando con SQL Injection, bastante básico pero entretenido.
#155
Scripting / Script cierra unity
Enero 24, 2019, 04:38:08 PM
Te recomiendo algo para que lo tomes muy encerio y lo apliques desde el momento que lees este comentario.
1 - No deberias usar UnityScripts, ya se encuentra descontinuado y es un pseudo lenguaje donde confunde muchas características de la programación orientada a objeto. Desde este momento empieza por utilizar C#, todo te sera mucho mas simple y a medida que avances podrás resolver problemáticas complejas que UnityScripts no puede.
2 - El foro recomiendo una versión estable de Unity y esta es la que deberias de tener, con más razón si estás aprendiendo.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Cuando empieces a programar con C# necesitarás practicar la abstracción de los problemas para poder reflejarlos dentro del código.
Te dejo el código que publicaste en C# y comentado-
1 - No deberias usar UnityScripts, ya se encuentra descontinuado y es un pseudo lenguaje donde confunde muchas características de la programación orientada a objeto. Desde este momento empieza por utilizar C#, todo te sera mucho mas simple y a medida que avances podrás resolver problemáticas complejas que UnityScripts no puede.
2 - El foro recomiendo una versión estable de Unity y esta es la que deberias de tener, con más razón si estás aprendiendo.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Cuando empieces a programar con C# necesitarás practicar la abstracción de los problemas para poder reflejarlos dentro del código.
Te dejo el código que publicaste en C# y comentado-
//Using sirve para incluir [NameSpace (Nombres de espacio)] al codigo librerias de tercero, por ejemplo,
//System contiene clases como Action que se utiliza para representar un evento. UnityEngine contiene a MonoBeahviour, Transform, Vector3,2, etc.
using System;
using System.Collections; // NameSpace que contiene IEnumerator.
using UnityEngine;
[RequireComponent(typeof(NavMeshAgent))] // Atributo que indica que el componente NombreScripts requiere que el Objeto donde esta asignado contenga NavMeshAgent, Si no lo contiene lo agrega automaticamente.
public class NombreScripts : MonoBehaviour // <<< Todos los componente en Unity requiere Heredar de esta clase para que funcionen. Existen otros tipos de componentes que mas adelante podras ir descubriendo.
{
private NavMeshAgent m_navMeshAgent {get; set;} // Componente NavMeshAgent usado como CACHE
private Transform m_meta {get; set;} // Variable Transform usado como CACHE
[SerializeField]
private int m_salud = 100; // Variable de Tipo Entero, utilizada para la SALUD
[SerializeField]
private bool m_patrullar = false; // Variable de Tipo Booleano, ¿utilizada como BANDERA (Flag)?
[SerializeField]
private Transform[] Puntos = null; // Variable de Tipo Arreglo de Transform, ¿Utilizada para el recorrido (WayPoints)?
[SerializeField]
private Action m_eventDead; // Evento, al ser invocado se llaman todos los delegados (Funciones) asignado.
public bool IsAvailableMeta { get { return m_meta != null; } } // Propiedad que nos returna con un Booleano si la Variable m_meta es NULL.
private void Awake()
{
m_navMeshAgent = GetComponent<NavMeshAgent>(); // Obtenemos el componente NavMeshAgent y lo asignamos a m_navMeshAgent.
m_eventDead += () => //Asignamos un delegado Anonimo al evento m_eventDead, este delegedo Destruye el objeto cuando muere.
{
Destroy(gameObject);
};
StartCorrutine(YieldUpdate()); // Iniciamos una corrutina para evitar buscar en cada ciclo del Update. Esto lo hago para que entiendas como funcionan estas cosas en C#.
}
private IEnumarator YieldUpdate() // Las Corrutinas son delegados que retornan un object IEnumerator, no es complejo de comprender pero en este momento te podria complicar bastante.
{
while(true) // Ciclo infinito
{
if(IsAvailableMeta) // Comprobar si m_meta esta asignado, si es asi, entonces que espere 1 segundo y vuelva a repetir el bucle.
{
yield return new WaitForSeconds(1);
continue;
}
// si la condición anterior es falsa, entonces se llama a la función FindMeta, si se encuentra una meta se vuelve a dar 5 segundo antes de repetir el ciclo nuevamente, de lo contrario solo 1 segundo.