Si lo pones el formato scene en yaml no suele dar tantos problemas ya que es formato texto. de todos modos hay una herramienta que permite pasar cosas de un fichero de scene a otra version del mismo. gitmerge o algo asi se llamaba.
Hay gitignore previamente hechos para proyectos unity. te lo bajas y lo pones.
Salu2
“I have seen things in the original DOTA that you people wouldn’t believe”. “I have seen Windrunner attack Techies off the bank of the upper river and die; I have seen heroes on fire off the shoulder of the Tree of Life. I watched spells glitter in the dark near the enemy base. All those moments are lost in battle, like… items off a courier in an AOE nuke.”
No es mergear la escene, si los 2 cambiamos el arbol de sitio, alguno de los 2 tendra q perder los cambios. Es una mera cuestion de cambiar el chip y saber como trabaja unity. Por lo general en cualquier equipo a la escena solo tiene acceso quien la necesita, el resto tenemos escenas de test para crear prefabs y demas historias jejeje
A eso me refiero con la herramienta que comento podrias llegar a mergear 2 escenas con cambios hechos por 2 personas. Y seguramente en formato yaml incluso si no son cambios solapantes podria llegar hasta funcionar de serie (como si fuera un codigo).
Salu2
“I have seen things in the original DOTA that you people wouldn’t believe”. “I have seen Windrunner attack Techies off the bank of the upper river and die; I have seen heroes on fire off the shoulder of the Tree of Life. I watched spells glitter in the dark near the enemy base. All those moments are lost in battle, like… items off a courier in an AOE nuke.”
No conozco unity pero lo que comentas es un comando de git, el git merge o mergetool, y para binarios EN NINGUN CASO se recomienda usar ningún control de versiones porque obviamente SIEMPRE dan problemas con los merges. No hay herramienta mágica que lo solucione, pero ni para git, ni para mercurial, ni para ningún otro
josepzin (27/11/2015)
Exactamente. Por eso digo que es mejor los ficheros de scenes se guarden en YAML(por defecto son binarios, si quieres te explico el formato , perdon q me emociono ) pq es texto al fin y al cabo (es una especie de xml).
La herramienta que digo lo que hace es abre 2 ficheros de scenes de unity ya sean binarios o yaml, y te dice la diferencia en los objetos y te permite elegir con que quedarte de los 2. vamos que no tiene nada que ver con git, de hecho depende del editor de Unity al 100% ya que lo usa para abrir los ficheros y explorar su contenido.
Salu2
“I have seen things in the original DOTA that you people wouldn’t believe”. “I have seen Windrunner attack Techies off the bank of the upper river and die; I have seen heroes on fire off the shoulder of the Tree of Life. I watched spells glitter in the dark near the enemy base. All those moments are lost in battle, like… items off a courier in an AOE nuke.”
Conozco YAML porque es lo mismo que usa Windows Phone para las interfaces. La herramienta que dices es difftool y hay muchas interfaces gráficas para ello desde la que lleva git de serie, Kaleidoscope (que es una de las mejores) o la que lleve unity, pero TODAS funcionan mas o menos igual (algunas mejor, otras peor). Ninguna hace magia y por mucho que puedas ver las diferencias en un binario es muy dificil luego hacer el merge y que se quede todo bien.
Me explico como el culo sorry.
Lo de q te explicaba era el formato binario de unity q me lo se de memoria. Ya me imaginaba q sabrias lo q era el yaml por eso mismo.
La herramienta que digo no es difftool ni ninguna herramienta de git. Es un "asset" que te puedes descargar para el editor de Unity, como si fuera una libreria que te da una opcion de hacer tranvase de los objetos que cuelgan de 2 ficheros de scene. Primero los lee e interpreta con la libreria interna de Unity, y luego lee cada uno de los hijos y mira diferencias etc... Una imagen vale mas que mil chapas q pueda meter:
Salu2
“I have seen things in the original DOTA that you people wouldn’t believe”. “I have seen Windrunner attack Techies off the bank of the upper river and die; I have seen heroes on fire off the shoulder of the Tree of Life. I watched spells glitter in the dark near the enemy base. All those moments are lost in battle, like… items off a courier in an AOE nuke.”
Esta en concreto no usa ningun difftool pero se conecta al git para conseguir la version con la que comparar del fichero, pero luego internamente compara los objectos de unity no del git. Esta el codigo fuente por eso lo se
https://github.com/FlaShG/GitMerge-for-Unity
Salu2
“I have seen things in the original DOTA that you people wouldn’t believe”. “I have seen Windrunner attack Techies off the bank of the upper river and die; I have seen heroes on fire off the shoulder of the Tree of Life. I watched spells glitter in the dark near the enemy base. All those moments are lost in battle, like… items off a courier in an AOE nuke.”
Mi ultimo intento de explicarlo, lo prometo.
Esta herramienta coge el fichero de scene A de Unity, lo carga mediante el editor y obtiene todos los objetos que hay dentro de la caja/fichero/escena. Coge un fichero B de scene de Unity (desde otro branch de git, o de otra carpeta del hdd o lo que sea) lo carga mediante el editor y obtiene todos los objetos del fichero.
Ahora por programacion internamente y supongo que a fuerza bruta empieza a comparar todos los objetos del fichero A con todos los del fichero B, pero en memoria sin usar git para nada. Vamos coge el A.Elemento1.equals(B.elemento1) etc.... y va monstrando las diferencias de cada objeto de cada uno de los ficheros. Vamos que es como comparar 2 listas de elementos que tengas en memoria.
Soy un inutil explicandome sorry.
Salu2
“I have seen things in the original DOTA that you people wouldn’t believe”. “I have seen Windrunner attack Techies off the bank of the upper river and die; I have seen heroes on fire off the shoulder of the Tree of Life. I watched spells glitter in the dark near the enemy base. All those moments are lost in battle, like… items off a courier in an AOE nuke.”
Marcadores