Jump to content

Search the Community

Showing results for tags 'lista'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • General
    • Proyectos
    • Offtopic
    • Unity Feeds
    • Website
    • Youtube
  • Mesa de ayuda
    • Unity
    • Arte
    • Builds & Dispositivos
    • Otras Especialidades
  • Aportes de la Comunidad
    • Recursos
    • Eventos
  • Bolsa de trabajo & Colaboraciones
    • Ofertas y Demandas
  • Post Antiguos
    • General (Antiguo)

Categories

  • Roadmap

Blogs

There are no results to display.

There are no results to display.


Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Especialidad

Found 5 results

  1. He estado un buen rato investigando por la red pero no encuentro una solución a mi problema. Así que diccionario y dudas en mano me dispongo a preguntar Tengo una pequeña IA que utilizo para controlar a los enemigos y la verdad es que es muy resultona, pero al rato de luchar se hace aburrido. Así que he pensado en hacer que, cuando aya más de un enemigo en escena estos creen estrategias. Para lograr esto, creo un script controlador, que actuará como el cerebro de una mente colmena... para eso quiero usar una lista de GameObjects, esta tendrá dentro todos los enemigos que se encuentren en escena en ese momento, la lista se actualizaría cada frame, y luego según la cantidad de enemigos que se encuentren en la lista, estos aran una estrategia u otra seria algo así como if (ListaEnemigos.Count == 2) { ListaEnemigos.FindIndex(1) = ataca por esta zona ListaEnemigos.FindIndex(2) = ataca por esta otra } Bien.... el problema está en que necesito actualizar en cada fotograma la lista, para saber en tiempo real la cantidad de enemigos que se encuentran en la escena, y si simplemente pongo en el Update ListaEnemigos.Add(GameObject.FindObjectsWithTag("Enemigo")), la lista crece y crece por que no se actualiza, se añade. Para solucionar esto ser me ocurrió que al iniciar el un nuevo fotograma se eliminaran todos los elementos de la lista para luego añadirlos de nuevo, lo cual es un poco, bastante, absurdo. Además, por lo que e investigado tendría que usar un foreach recorriendo cada uno de los objetos de la lista y eliminándolos, lo cual tengo entendido no es muy eficiente.... ¿Ay algún modo de, simplemente; actualizar la lista y no de añadir? ¿Realmente es tan ineficiente lo del foreach? ¿Exsiste algún modo de eliminar todos los objetos de una lista (no me refiero a eliminar el obj en si, sino de borrarlo de la lista) sin necesidad de un bucle? Espero que no os duelan mucho los ojos, y gracias. Salud.
  2. Este es el primer post que creo y espero no romper (mucho) ninguna regla. Empecemos!! Estoy aprendiendo a usar Unity para poder llegar a ser el mejor programador de la historia!!!.... Bueno talvez no tanto, pero con poder expresarme con libertad me alcanza .Entonces me propuse hacer 10 juegos sencillos como para un principiante. Tocando la parte visual un poco hasta tener algo que sintamos que esta terminado y lo mismo con el audio, programación, etc. Entonces les propongo a todos aquellos que recién empiecen, o solo quieran participar, que intenten crear estos 10 juegos y los muestren en este foro para poder comparar y ver las distintas formas que hay de hacer las cosa. De esta forma aprender y conocer distintas técnicas, trucos, etc. Yo en el momento que hice este post estaba por el 3º, espero haber avanzado . Para tomarlo como terminado, cada juego tiene que tener las funciones básicas para su funcionamiento, mínimamente y luego se pueden explayar todo lo que quieran. ___________________________________________________________________________________________________________________________ La lista: 1º Pong 2º Breakout 3º Tetris 4º Snake 5º Pacman 6º R-Type 7º Mario 8º Super Cars 9º Carreras 3ª persona 10º plataforma 3ª persona ___________________________________________________________________________________________________________________________ Espero los aportes de todos y ya quiero ver esos juegos!!.
  3. Buenos dias. Tengo una simple lista de objetos(flechas),el cual cuando aprieto la barra espaciadora va quitando uno a uno las flechas de la lista. Esto va perfecto.Pero mi intención es que también me los quite visualmente osea desde el juego con un disable/delete lo que sea. Pero no veo la manera. Agradecería una ayuda. Gracias using System.Collections; using System.Collections.Generic; using UnityEngine; public class quitaflechas : MonoBehaviour { public List<GameObject> enemies; void Awake() { enemies = new List<GameObject>(); foreach(GameObject enemy in GameObject.FindGameObjectsWithTag("flecha")) { enemies.Add (enemy); } } void Update() { if(enemies.Count > ) { if(Input.GetKeyDown (KeyCode.Space)) { enemies.RemoveAt(); print (enemies.Count); } } } }
  4. Muy buenas tengo una duda sencilla quiero crear como un buscador que cuando ponga una palabra el sistema busque a ver si esta existente y si existe que haga una acción esto tengo al momento using UnityEngine; using System.Collections; using System.Collections.Generic; public class Sistema : MonoBehaviour { public void Start() { Items(); } public void Items() { List<string> items = new List<string>(); items.Add("Obj1"); ---------------------------------------Los objetos son palabras q aun no defino items.Add("Obj2"); --------------------------------------- foreach (string learn in items) { Debug.Log(learn); } } } como aria para hacer que digamos en un texto en el programa ponga Obj1 y diga existe y cuando ponga Obj3 diga no existe o en ves de pones existe o no existe que haga una acción cualquiera------- y por ultimo como pregunta secundaria hay una forma mas sencilla para el código es que voy a utilizar muchas palabras
  5. Pues resulta que he hecho un script de Editor/Inspector de unity para hacer que una lista, que puede modificarse desde el inspector, sea ordenable. Para esto hay muchos tutoriales en internet. El script funciona bien, adjunto una imagen del inspector. El problema es que al cerrar Unity y volver a abrirlo, los cambios han desaparecido, no se guardan. Es decir, cualquier cambio que le haga en la lista (añadir, quitar o modificar valores) se mantiene hasta que cierre Unity. Cuando vuelvo a abrir los cambios han desaparecido... Os dejo aquí el código, a ver si me podéis ayudar: [CustomEditor(typeof(Dialog))] public class DialogEventInspector : Editor { private ReorderableList reorderableList; private float[] sizes; private float[] steps; private float[] spaces; private Dialog dialog { get { return target as Dialog; } } private void OnEnable() { reorderableList = new ReorderableList(dialog.DialogEvents, typeof(DialogEvent), true, true, true, true); // for rects in draw sizes = new float[] { 0.19f, 0.19f, 0.19f, 0.08f, 0.03f, 0.18f, 0.08f}; steps = new float[sizes.Length]; float sum = 0.03f; for(int i = 0; i<sizes.Length; ++i) { steps[i] = sum; sum += sizes[i]; } spaces = new float[] { 0.5f, 0.8f, 0.85f, 0.55f, 0.23f, 0.4f, 0.45f}; // Add listeners to draw events reorderableList.drawHeaderCallback += DrawHeader; reorderableList.drawElementCallback += DrawElement; reorderableList.onAddCallback += AddItem; reorderableList.onRemoveCallback += RemoveItem; } private void OnDisable() { // Make sure we don't get memory leaks etc. reorderableList.drawHeaderCallback -= DrawHeader; reorderableList.drawElementCallback -= DrawElement; reorderableList.onAddCallback -= AddItem; reorderableList.onRemoveCallback -= RemoveItem; } private void DrawHeader(Rect rect) { GUI.Label(rect, getSpaceOf(0, rect) + "Name" + getSpaceOf(1, rect) + "Type"+ getSpaceOf(2, rect) + "Item"+ getSpaceOf(3, rect)+"GT" + getSpaceOf(4, rect) + "N"+ getSpaceOf(5, rect) + "Text" + getSpaceOf(6, rect) + "Darken"); } private string getSpaceOf(int i, Rect rect) { string space = ""; int Spaces = (int)(rect.width / 20 * spaces[i]); for (int k = 0; k < Spaces; ++k) space += ' '; return space; } private void DrawElement(Rect rect, int index, bool active, bool focused) { DialogEvent item = dialog.DialogEvents[index]; EditorGUI.BeginChangeCheck(); EditorGUI.LabelField(new Rect(rect.x, rect.y, rect.width * 0.03f, rect.height), index.ToString()); item.Name = EditorGUI.TextField(new Rect(rect.x + steps[0]*rect.width, rect.y, sizes[0]*rect.width, rect.height), item.Name); item.eventType = (DialogEvent.EventType) EditorGUI.EnumPopup(new Rect(rect.x + steps[1]*rect.width, rect.y, rect.width*sizes[1], rect.height), item.eventType); item.Item = (DialogResource) EditorGUI.ObjectField(new Rect(rect.x + steps[2]*rect.width, rect.y, rect.width*sizes[2], rect.height), item.Item, typeof(DialogResource), true); item.GradualTime = EditorGUI.FloatField(new Rect(rect.x + steps[3] * rect.width, rect.y, rect.width * sizes[3] *0.75f, rect.height), item.GradualTime); item.PassToNext = EditorGUI.Toggle(new Rect(rect.x + steps[4] * rect.width, rect.y, rect.width * sizes[2], rect.height), item.PassToNext); item.Text = (DialogText)EditorGUI.ObjectField(new Rect(rect.x + steps[5] * rect.width, rect.y, rect.width * sizes[5], rect.height), item.Text, typeof(DialogText), true); item.Darken = EditorGUI.Toggle(new Rect(rect.x + steps[6] * rect.width*1.02f, rect.y, rect.width * sizes[6], rect.height), item.Darken); if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(target); } } private void AddItem(ReorderableList list) { dialog.DialogEvents.Add(new DialogEvent()); EditorUtility.SetDirty(target); } private void RemoveItem(ReorderableList list) { dialog.DialogEvents.RemoveAt(list.index); EditorUtility.SetDirty(target); } public override void OnInspectorGUI() { serializedObject.Update(); base.OnInspectorGUI(); // Actually draw the list in the inspector reorderableList.DoLayoutList(); serializedObject.ApplyModifiedProperties(); } }
UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...