Jump to content
UnitySpain

Aceptamos donaciones vía Paypal.

UnitySpain.com es un servicio gratuito, pero mantener la Comunidad conlleva una serie de gastos.

Fondo Anual Unityspain: Donados 58,34€ de 150,00€

  • Servidor: Dominio.com y Hosting Web
  • Mantenimiento de los Foros
  • Contenido y Servicios Extras
  • Mantenimiento para Redes Sociales

UnityDevelopersXD

Registrados
  • Content Count

    69
  • Joined

  • Last visited

Community Reputation

3 Neutral

1 Follower

About UnityDevelopersXD

  • Rank
    Usuario

Profile Information

  • Especialidad
    Coder

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Pienso que sería mucho rollo cambiarlo a una clase, de echo, como struct viene perfecto para las funciones que usa. Lo mejor sería usar el default que has dicho (No lo conocia eh, me lo guardo).
  2. Hola! Si, en un script que yo hice anteriormente con algo parecido me pasaba así, ya que al no ser un gameobject sino un script o estruct no te lo reconoce como null, o eso creo ya que tuve que hacer otra comprobación para que funcionara. En mi opinión tienes dos opciones, la primera y la más "dificil" sería añadir un bool al struct de los items, ponerla en true siempre que crees un objeto, para que puedas hacer una comprobación de, if(bool == false), ya que si sabes que siempre está en true cuando hay un item entonces sabrás que si está en false es porque no encontró nada. La segunda opción y la más fácil, es que hagas en ese if la verificación de si el ID que encontró es igual al ID que le pasaste, entonces el único problema con esto es que si tienes un ID que sea cero pues puede fallar. Lo digo porque todos los int se inicializan a cero, si en esa busqueda no encuentra nada entonces creo que te devuelve esa struct pero con todo por defecto (cantidad en 0 e ID en 0), entonces podrías verificar y hacer que ninguno de tus items tengan el ID 0 y así puedes hacer lo que te dije o hacer ya directamente esto: if(ID > 0) y todo estaría listo. Espero que te ayude.
  3. Si franco, tienes razón, por eso lo he comentado en el código, que está opción es una alternativa a la que ha colocado el, pero que sigue siendo mejor la forma que utilizas de hacer un find, solo que puse juanma y no francoe jaja disculpa. Pero si, en general es mejor lo que mencionas tu, sin embargo la alternativa que presento es totalmente funcional, solo habría que optimizarla.
  4. Hola! Jaja disculpa, edité tu código un poco rápido y se mhan pasado bastantes cosas jaja. Si, se me han ido varias cosillas por acá jaja, en total quedaría así: public void AgrregarItem (int id, int cantidad){ bool EncontroParecido = false; /*ObjetoInvId ObjetoEncontrado = Quitamos esto porque no la vamos a asignar a ningun lado, la variable que usaremos será la que se cree adelante en el propio iterador. */inventarioo.ForEach(delegate(ObjetoInvId CObjeto){ if(CObjeto.id == id){ CObjeto.cantidad += cantidad; // Si lo de arriba no funciona entonces tienes que hacer una busqueda denuevo con esto: //inventarioo.Find(x => x.id == id) = //Pero si harás lo de arriba entonces mejor que uses directamente lo que te pasó Juanma porque es más legible y tiene mejor rendimiento que //hacer dos busquedas. Si te funca sin hacer el find entonces queda bien. ActualizarInventario(); EncontroParecido = true; } }); if(!EncontroParecido){ inventarioo.Add(new ObjetoInvId(id, cantidad)); ActualizarInventario(); } } Creo que así no debería tener errores, no lo he probado, pero así a vista debe ser así. Igualmente recuerda que en el condicional verificas que no hay ningun objeto igual, por lo que solo tienes que agregar uno nuevo en cualquier espacio vacio o añadir un nuevo item a la lista. Y arriba en el iterador del foreach verificas si es igual a la ID que pasas, si es así entonces solo sumas la cantidad a la que tenía. Suerte!
  5. Hola! Disculpa, lo de los IF y else como te a dicho francoe no funciona, ya que agregaría un objeto por cada vez que no encuentre uno parecido. Lo que has echo está bien también, si quieres hacerlo mas sencillo y aprovechar la lista que tienes creada no hagas uso del for, utiliza el foreach incorporado de las lists: public void AgrregarItem (int id, int cantidad){ bool EncontroParecido = false; ObjetoInvId ObjetoEncontrado = inventarioo.ForEach(delegate(ObjetoInvId CObjeto){ if(CObjeto.id == id){ inventarioo.Add(new ObjetoInvId(id, cantidad)); ActualizarInventario(); EncontroParecido = true; } }); if(!EncontroParecido){ inventarioo[i] = new ObjetoInvId(inventarioo[i].id, inventarioo[i].cantidad + cantidad); ActualizarInventario(); } } Allí estas utlizando las propiedades de la lista, haces una busqueda con el ForEach y en cada vuelta verificas si el objeto es parecido a lo que necesitas. Lo que te ha dicho francoe es solo "agregar y ya está" no debes agregar ninguna libreria necesariamente porque las funciones que ha implementado en el código son de las propias lists y vienen con los assemblies por defecto. No conocia esas funciones como LINQ y Lambda, pero si esas se refiere a las funciones que usó entonces están por defecto. El return se utiliza más que todo en casos cuando el método devuelve algo (no está void), no es muy comun verlo en métodos que están vacios (void), deberías utilizarlo solo en esos casos porque mejora la lectura de tu código, en este caso tu método está vacio y devolver "nada" es un poco raro, sería mejor que utilizaras una bool frente a tu código para que verificaras si se encontro un objeto, luego si se encuentra un objeto la marcas como true, sino no hace nada, y al final del bucle hacer un if que verifique si esa bool es false, si lo es entonces crea un nuevo objeto, sino no hace nada,tal como he echo en el código de arriba. Tambien puedes utilizar la opción de francoe que queda más limpia y tambien usas las funciones de las list, te coloco esta como una alternativa a la mia si lo ves muy enrrollado. Suerte!
  6. Hola! Como dice Juanma. Te explico: public void AgrregarItem (int id, int cantidad){ for (int i = ; i < inventarioo.Count; i++){ if (inventarioo[i].id == id) { inventarioo[i] = new ObjetoInvId(inventarioo[i].id, inventarioo[i].cantidad + cantidad); ActualizarInventario(); return; } inventarioo.Add(new ObjetoInvId(id, cantidad)); ActualizarInventario(); } } Allí en ese trozo, si se da cuenta en esta parte: if (inventarioo[i].id == id) { inventarioo[i] = new ObjetoInvId(inventarioo[i].id, inventarioo[i].cantidad + cantidad); ActualizarInventario(); return; } inventarioo.Add(new ObjetoInvId(id, cantidad)); ActualizarInventario(); Estaría diciendo: Si inventario[Numero del contador] tiene un ID que es igual al ID que me han pasado entonces agrega un nuevo objeto al inventario con la cantidad que tenia más la cantidad que me haz pasado, luego actualiza el inventario. (Quita el return, si quieres salir del bucle tienes que colocar break pero no te servirá en este caso). Luego, aún si encontró un ID o no lo encontro, igualmente agregará un nuevo objeto y luego actualiza el inventario. El punto es que estás utilizando el return como para salir del IF y de todo,pero no es así por lo que está siguiendo con el código abajo, para solucionarlo solo debes agregar un else al final de ese IF y meter en sus llaves el código que tienes abajo, quedando así: if (inventarioo[i].id == id) { inventarioo[i] = new ObjetoInvId(inventarioo[i].id, inventarioo[i].cantidad + cantidad); ActualizarInventario(); }else{ inventarioo.Add(new ObjetoInvId(id, cantidad)); ActualizarInventario(); } Prueba eso y cuentanos. Creo que debería funcionar porque es lo único que noto. Suerte!!
  7. Hola! Como te han dicho, pero no tienes que reinstalar el Unity, solo descargarlos aparte e instalarlos. Mira, tu versión es la 5.6.4f1 No? Aquí está el link de sus assets: https://unity3d.com/es/get-unity/download/archive?_ga=2.126551949.1027446578.1513469751-539080948.1513277628 Solo tienes que irte a la página oficial de Unity, buscar las descargas (Obtener Unity), Versión Personal, tu versión de Unity (Posiblemente en "Versiones Anteriores" abajo de todo), y desplegas el ComboBox que dice Descargas Win, y elijes "Activos Estandar". Luego haces clic en descargar y cuando esté todo descargado lo instalas. Una vez echo eso solo te queda hacer lo que te hemos dicho todos antes. Suerte!
  8. Hola! En las nuevas versiones de Unity tienes que elegir que assets utilizar a la hora de crear el proyecto. Es decir, al ponerle nombre, en esa misma pantalla hay una opción que dice "Add Asset Packague", dale clic y te dará los assets instalados para elegir (Recuerda instalar los assets antes). Si por algun motivo no te dejase (porque no te aparecieran o alguna otra razón) colocar los assets desde allí o simplemente no quieres crear otro proyecto solo tendrías que ir a la pestaña "Asset" dentro de Unity (En la imagen que pasaste aparece) y luego en "Import Packague" o "Import Assets" y allí te apareceran, solo elije el que quieras. Hasta luego!
  9. Muchas gracias por la info. El Spriter lo había escuchado pero no le había prestado mucha atención. Luego lo reviso.
  10. Ah ya veo. Si suena bastante bien, lo probé y si que se pueden obtener mejores movimientos además de que no me rijo por los del sprite sino que puedo modificarlos o añadir más sobre la marcha. Muchas gracias.
  11. Programación amigo, es lo que mejor se me da, pero puedo ayudar con modelado 3D y a editar dentro del propio Unity. Avisame por aquí, por MP, por el correo o por Skype cualquier cosa. Estamos en contacto.
  12. Hola!! Estoy armando un pequeño proyecto en 2D algo que antes no había hecho (me manejo más con el 3D) y tengo una pequeña duda. A la hora de crear el personaje es mejor armarlo por piezas (Hacer el personaje con pies,manos, cabeza,etc separados y luego unirlos en un gameobject) o es mejor tener el sprite del personaje? La verdad yo me guió por la segunda pero no se, sin embargo no sabría como hacer para que pase de corriendo a caminando por ejemplo con esa, ya que trabajo con animator y no e usado el animation pero ya veré como hago. Gracias.
  13. Hola!! Estoy trabajando en un proyecto 2D de pruebas, solo para aumentar mis conocimientos y por hacer algo. Este es como de plataformas y se me ha ocurrido que existiera una cuerda y el personaje pudiera saltar y mantenerse en ella. Sin embargo no se me ha ocurrido el como de esto, es decir, quiero que se mantenga, también que pueda subir por ella o caerse (Soltarse) Si así lo quisiera. Ojo, no pido que me hagan el trabajo, solo que me orienten si pueden. LLevo varias semanas pensando en como pero nada, lo único que se me ocurrió fue que cuando tocara la cuerda la gravedad del personaje fuera cero, osea se mantuviera, luego si quería subir pues le agrego o disminuyo gravedad segun lo que necesite, pero no me pareció buena idea pues la cuerda no podría moverse y el personaje tampoco (Hacía los lados, dando un efecto más realista por así decirlo). Espero que me puedan ayudar. Gracias.
  14. Hola a todos!!! Me ofrezco como programador de lenguaje C# en unity. Actualmente busco un equipo o "trabajo" en el cual podamos realizar un proyecto completo o lo que necesiten. Se puede decir que tengo un nivel básico-intermedio, puedo programar inventarios, movimiento de personajes (Aunque estos no se me dan tan fluidos, pero puedo intentar y practicar para ver que se puede lograr), también he trabajado con el Animator y puedo programar con él para unir las animaciones y más. Tengo tiempo para realizar trabajos, pero nada apresurado pues no dispongo de tanto así, además me gusta trabajar en "calma" almenos dos días para realizar un código como moverse o utilizando el Animator, una semana para inventarios y así, depende lo complicado del trabajo. Realizo las cosas rápido pero siempre me gusta ver como mejorar el código y reparar los errores que tenga, por ello pido el tiempo. Si es un proyecto simplemente de aprendizaje (Donde realicemos el proyecto pero no se publicara, venderá o algo por el estilo) lo puedo aceptar, pues igualmente me gustaría trabajar con un equipo de desarrollo de videojuegos y aprender más técnicas y tal, fogearme por así decirlo. Entonces, cualquier contacto pueden hacerlo en mi Skype: Sproilex (Tengo mi misma foto de perfil) o también por MP. Hasta luego.
  15. Hola como Estas!!! Aún estas interesado? Estoy disponible para así ir aprendiendo más sobre la marcha. Buscame en Skype como: Sproilex Tengo la misma imagen que la de acá. Estamos en contacto.
×
×
  • Create New...