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

ftejada

Registrados
  • Content Count

    402
  • Joined

  • Last visited

  • Days Won

    3

ftejada last won the day on August 7 2016

ftejada had the most liked content!

Community Reputation

39 Excellent

2 Followers

About ftejada

  • Rank
    Avanzado
  • Birthday 03/17/1980

Profile Information

  • Especialidad
    Coder

Recent Profile Visitors

1,192 profile views
  1. Gracias por las respuestas. Y parece que me va quedando algo mas claro todo este asunto... Voy a seguir con ello y si tengo alguna otra duda pregunto. Un saludo a todos.
  2. Gracias a todos por responder. Hay algunas cositas que aun no veo claro... @lightbug inputEditor de donde sale? qué almacena exactamente? Perdona la torpeza pero no lo termino de entender. @iRobb Gracias por la info sobre esto. No terminaba de entender realmente si me servia en un SO. Ya todo claro Por otra parte, se que de la manera que indicas no necesito mostrar ni cambiar los valores de las variables del SO desde un "custom Inspector" por llamarlo de algun modo. Aunque en el ejemplo que puse en codigo simplifique todo para que se entendiese el problema, en realidad tengo muchos SO con muchas opciones que el usuario debe configurar. Por eso necesito que todo se pueda manejar desde un solo sitio "centralizado", en vez de tener que obligar al usuario a buscar los SO, en sus respectivas carpetas del proyecto, cada vez que quiera modificar alguna configuracion. Por eso pensé y creo que la mejor manera es mediante un CunstomInspector que maneje todos los SO y sus variables para poderse mostrar y configurar desde ahí. Si no he entendido lo que querias decirme ruego me disculpes. Saludos
  3. Hola a todos!! estoy intentando que se muestren las variables publicas que tengo en una clase que hereda de ScriptableObject en un custom Editor que estoy haciendo [System.Serializable] public class ClaseA : ScriptableObject { public bool showShapes = true; } public class MainClass : Monobehaviour { //public ClaseA claseA = new ClaseA(); //Tambien probé a poner esto en vez de la linea de abajo pero no solucionaba el problema public ClaseA claseA; } [CustomEditor(typeof(MainClass))] public class MainClassEditor : Editor { SerializedProperty claseA = null; OnEnable() { claseA = serializedObject.FindProperty("claseA"); } public override void OnInspectorGUI() { //.... EditorGUILayout.PropertyField(claseA, true); //¿Supuestamente con true como segundo parametro dibuja las variables que tenga esta property? //... } } El caso es que no se porqué no se muestran las variables, solo se muestra el campo para asignar/arrastrar el ScriptableObject en cuestion. Si no hay ninguno asignado entiendo que no se muestre nada, pero una vez asignado... no se pq. Cuando quiero mostrar arrays de clases con todas sus variables publicas lo hago con serializedObject.FindProperty(property.GetArrayElementAtIndex(i), true) y me muestra todas sus variables publicas poniendo en true el segundo parametro de la funcion FindProperty(). Acaso no se pueden mostrar las variables de un scriptableObject mediante FindProperty(property, true);????? He estado buscando por internet y la documentacion durante varias horas pero no he podido encontrar por que me ocurre este problema. Version de Unity 2018.2.0 Gracias por adelantado. Un saludo
  4. Re-abro este post pq creo que es mejor seguir por este hilo el problema que me ocurre ya que viene de todo esto que hemos estado mirando... Dejo este video abajo explicandolo todo pq creo que es mas comodo y rapido de explicar y entender para los demas. En resumen la Ventana Editor que programe me da problemas al cerrar y abrir Unity cuando esta ventana la dejo abierta. Unity crashea al cerrarlo. Y al abrirlo me pide reset el layout de ventanas para poder iniciar Unity. En el codigo de la Ventana de Editor utilizo OnEnable() y OnDisable() para crear un profile y destruirlo cuando se abre o cierra la Ventana. Pero si cierro Unity con la Ventana abierta me da el problema. Video A ver si alguien sabe que ocurre y como solucionarlo, Saludos
  5. Hola a todos!! Me está ocurriendo el siguiente problema y no se si estoy haciendo algo mal o es un bug de Unity. Me preguntaba si alguien puede tener una idea de que me está ocurriendo. Mediante scripts creo un Profile de un scriptableObject que tiene como variable una List<> de otra class que tiene ciertas variables, lo guardo en una carpeta y relleno la List<> con varios index y a cada index le doy una serie de valores a sus variables. Una vez hecho este proceso mencionado mediante una ventana de Inspector que programé, el Profile aparece en la carpeta donde se creo y guardó, conteniendo todos los datos (numero de index en la List<> y los datos que le asigne a sus variables) correctamente. Hasta aquí todo bien. El problema viene cuando cierro Unity y lo abro de nuevo. Si ahora voy a la carpeta donde debe estár ese Profile que creamos por script mediante la Ventana editor que programamos, el Profile está, pero la List<> me aparece vacia (a 0) cuando se habia creado con varios index y evidentemente todos los datos que le asisgnamos a cada variable de cada uno de sus index se pierden. En resumen la List<> está a cero y no ha servido de nada que haya guardado sus datos. Dejo video para que veais a lo que me refiero... Video Por otro lado, parece que si cuando creo el Profile y antes de cerrar Unity le cambio cualquier valor de alguna de sus variables, SI se queda guardado todos sus datos al cerrar Unity y volverlo a abrir. Dejo video: Video ¿Me estoy perdiendo algo? ¿Pensaba que un scriptableObject conservaba el valor de sus datos? ¿Hay algo que estoy haciendo mal? A ver si alguien sabe que estoy haciendo mal Un saludo
  6. No, lo probé. Pero es justo lo que buscaba, concretamente el que he utilizado y mejor me viene es el LoadAssetAtPath Gracias @lightbug!!!!!
  7. Si y no.... Porque eso solo me sirve de control para ver si ya existe el asset. Pero al final tengo que crearlo/Instanciarlo por script de todos modos y no puedo coger uno de los que ya tuviese creado manualmente sin script... Es decir no puedo hacer algo como: CreateAnchorPoints createAnchorPoints = AssetDatabase.FindAssets("t:CreateAnchorPoints", folders); //Suponiendo que esto obtuviese el asset que está guardado en la carpeta que se le pasa como ruta
  8. Gracias por las respuestas!! He estado mirando lo que dijo lightbug (AssetDatabase), pero no encuentro la manera de hacerlo. "FindAssets" devuelve un array de string[] y no un scriptableObject.asset en si. Mirando lo que dice pioj "Recuerda que son una especie de "prefab" con datos. No hay fichero único en sí, hay instancias del mismo tipo de asset." No se si la unica manera de hacer esto es Instanciar uno cada vez que se abre la ventana en OnEnable()), e ir borrandolos al cerrarse la ventana con OnDisable() De todos modos comparto el codigo que hice por si a alguien le ayuda o teneis alguna sugerencia: public class NombreClaseWindows : EditorWindow { CreateAnchorPoints createAnchorPoints; //class Tipo ScriptableObject //... private void OnEnable() { CreateAsset(); } private void OnDisable() { DeleteAsset(); } private void CreateAsset() { string[] guids; string[] folders = new string[] { "Assets/NombreCarpeta/NombreCarpeta" }; // search for a ScriptObject called ScriptObj guids = AssetDatabase.FindAssets("t:CreateAnchorPoints", folders); foreach (string guid in guids) { Debug.Log("Ya esxiste este asset en la siguiente ruta: " + AssetDatabase.GUIDToAssetPath(guid)); Debug.LogError("Debe arrastrar al Field 'PROFILE DE COMPORTAMIENTO' el profile de la ruta: " + AssetDatabase.GUIDToAssetPath(guid)); return; } CreateAnchorPoints asset = (CreateAnchorPoints)ScriptableObject.CreateInstance(typeof(CreateAnchorPoints)); AssetDatabase.CreateAsset(asset, "Assets/NombreCarpeta/NombreCarpeta/CreateAnchorPoints.asset"); createAnchorPoints = asset; } private void DeleteAsset() { if (AssetDatabase.DeleteAsset(""Assets/NombreCarpeta/NombreCarpeta/CreateAnchorPoints.asset")) { Debug.Log("Successfully removed..."); } else { Debug.Log("Delete failed..."); } } } Saludos y gracias por la ayuda!!
  9. Hola Gente! Tengo una ventana de Editor que estoy programando y dentro de ella una variable de un script, con ciertos comportamientos, que es un ScriptableObject. Actualmente, en la ventana del editor que he creado, tengo el campo para que se pueda arrastrar ese "Script ScriptableObject" una vez creado y que el script de la Ventana de Editor pueda trabajar con él internamente. El caso es que me gustaría NO tener que arrastrar el scriptableObject al campo que he creado en la ventana, sino que al abrir la ventana del editor, se carge el scriptableObject a la variable dandole el patch donde está almacenado en el project... Algo asi como lo que se hace con los Resources.Load(). He probado a intentar cargarlo con Resources.Load() pero me da error... No se cual es la mejor manera de abordar esto. A ver si alguien puede orientarme un poco. Saludos
  10. Hola de nuevo a todos!! En estos tutoriales Tutoriales se explica como utilizar estos componentes de Unity para el NavMesh. Son hechos por Unity pero hay que descargarlos de Gihub. Pone que son para Unity 5.6 en adelante creo. Los he probado en Unity 2018.2.0 y van bien. Pero cuando meto estos componentes para la version de Unity 2018.1.3f1 que es donde tengo el proyecto para el que los necesito, me da este error al importarlo: Assets/NavMeshComponents/Scripts/NavMeshSurface.cs(376,52): error CS0117: `UnityEditor.PrefabUtility' does not contain a definition for `GetCorrespondingObjectFromSource' No puedo actualizar el proyecto a Unity 2018.2.0 pq es un proyecto debe salir bajo Unity 2018.1.3f1, por temas de licencia. He preguntado en el foro oficial de Unity pero nadie me ha dado una solución y quería saber si alguien sabe como solucionar este problema. Un saludo y gracias por adelantado.
  11. Hola a todos!! Se puede congelar (Freeze) dos de los componentes de FreezeRotation de un rigidbody mediante script??? Por lo que veo en la api solo puedo o congelar toda la rotación: rigBdy.constraints = RigidbodyConstraints.FreezeRotation; o Congelar solo uno de los componentes: //Este codigo solo congelaria el ultimo freeze que se hiciese, en este caso el de la rotacion en Z rigBdy.constraints = RigidbodyConstraints.FreezeRotationX; rigBdy.constraints = RigidbodyConstraints.FreezeRotationZ; ¿Existe alguna manera de congelar la rotacion de X y Z de un rigidbody mediante script? Saludos
  12. No. Esto lo estuve tanteando pero no sirve para lo que necesito. Esto lo reescalaria a nivel general y hay veces que necesito reescalar solo el tamaño de alguno de los ejes... Por no mencionar el hecho de que no sabría cuanto reescalarlo respecto a otra malla cuando vienen con distintos tamaños reales de otros programas 3d.. Por ejemp, si tengo un cubo con todos sus lados iguales y debo adaptarlo a otro cubo que tiene dos lados iguales (x, y) pero uno más grande (z) formando un rectangulo más que un cubo, no podría hacerlo. Aparte usar Scale Factor creo que me plantearia otros problemas... Gracias por el aporte @francoe1
  13. Ok... Pensaba que al cambiar el tamaño de los bounds cambiaba el tamaño de la malla. @J Montes Gracias por la apreciación... con Vector3.scale el codigo está mas limpio... @J Montes Me refería a cuando una esfera no es totalmente redonda... por ejemplo y alguno de sus ejes de (localScale) es de tamaño distinto Es posible que esto me pueda servir, aunque en principio solo para figuras donde el tamaño deba aumentar o disminuir por igual en todos sus lados... gracias @Igor Saludos
  14. @Igor He probado a hacer lo que dices pero la malla no cambia de tamaño, al menos visiblemente en la pantalla: Vector3 size = meshTarget.bounds.size; Vector3 nSize; nSize.x = Target.transform.lossyScale.x * size.x; nSize.y = Target.transform.lossyScale.y * size.y; nSize.z = Target.transform.lossyScale.z * size.z; mesh.bounds = new Bounds(mesh.bounds.center, nSize / 2); Supongo que no estaré utilizandolo bien... Saludos
×
×
  • Create New...