1: causa
En la mayoría de los casos, no es necesario modificar la unidad dll, porque la fuerza no lo permite, no bb, mi unidad versión 2017.4.25
Unity 2017 introdujo el nuevo método de atlas de spriteAtlas, pero cada vez que se crea un nuevo spriteAtlas, debes encontrar los archivos (carpetas) que necesitan para abrir el atlas.
Lo que creo es que cuando hago clic en el signo "+", ingresaré directamente a todas las carpetas que necesito para escribir atlas, como se muestra a continuación.
O empaquete directamente el sprite correspondiente que seleccioné (no puedo entender esto)
Así que quería escribir un script de editor, pensando que Unity debía tener una interfaz a este respecto, pero verifiqué la api, ¡no! ! ! ! ! ! ! !
Realmente no lo es, porque no tengo esta versión y no es en 2018.1. Verifiqué la interfaz en 2018.3.
En 2017, el uso de Unityeditor.U2D no existe.
2: Esquema
Unity abrió el código C # y luego me pregunté si podía modificarlo directamente, hacer clic en el signo "+" para modificar ese campo y luego descargar el código fuente correspondiente para ver el código dentro
Eso es todo, luego lo modifiqué un poco
Explicación del código: AssetDatabase.GetAssetPath (Selection.objects [0]) obtiene la primera ruta de archivo
System.IO.Directory.GetParent (). Name Obtiene el nombre de la carpeta principal de la ruta del archivo
Entonces pensé ingenuamente que era suficiente simplemente reemplazar el UnityEditor.dll en la unidad con el UnityEditor.dll compilado, pero cuando abrí la unidad, había un problema. ¡Hay un problema! ! ! Si estas bien dime
¿Entonces que hacer? ? ?
3: la solución definitiva
Finalmente, uso ILSpy para abrir UnityEditor.dll (ruta: Unity \ Editor \ Data \ Managed)
md obviamente está ahí, ¿por qué no dejarnos usarlo (ILSpy no puede modificar directamente el dll)? Solo quiero cambiar una línea de código, es muy difícil. Pero el problema con los programadores ordinarios es que sé cómo hacerlo. ¿Solo quiero rendirme así?
Luego encontré una manera de modificar el dll en Internet y lo encontré factible, pero no lo he probado.
1: Un trabajador debe primero afilar sus herramientas si quiere hacer bien su trabajo:
Primero busque dos herramientas (1): ildasm.exe: este es un software que genera archivos IL desde DLL
(2): ilasm.exe: esta es la función para regenerar DLL desde el archivo IL
2: generar IL
Abra este software, copie UnityEditro.dll en la unidad y luego ábralo con ildasm. No puedo leerlo incluso si lo abro, simplemente guárdelo.
Naming: normal significa que esto es normal
Luego, también compilamos el código fuente c # descargado
Luego compile este dll en lenguaje IL con ildasm como antes (por qué hacer esto, porque no entiendo IL, es imposible modificar IL directamente, solo puede comparar los dos archivos para ver el lugar modificado)
Luego, abra los dos IL para compararlos (simplemente ábralo con el Bloc de notas y busque el nombre del método AddPackable directamente)
Eso es todo, luego copio esta parte de IL a la normalidad.
Salvar
3: compilar en DLL
Luego compile este normal.IL modificado en una DLL
Use ilasm.exe, agregue el comando ilasm.exe /dll/resource=normal.res normal.il, y luego presione Enter
Verá que aparece un archivo normal.dll debajo de su carpeta.
Bien, entonces, cambie el nombre de este dll UnityEditor.dll y cópielo en la carpeta Data \ Managed de la unidad. ok y luego abre la unidad
Descubrí que no hay error, entonces probamos el efecto
Por ejemplo, queremos abrir esta carpeta como un atlas y crear un atlas en este directorio.
¡OK, se acabó! ! ! Es puro dolor de huevo 2018.3, puede escribir su propio script de editor para agregar. ¡Pero puede aprender a modificar el dll y luego volver a compilarlo! ! !
Dos direcciones de herramientas: ilasm ildasm
Enlace: https://pan.baidu.com/s/18KTRcza1lP8cZ0f7CjNB_g Código de extracción: xabb
Se cargó originalmente en csdn, pero los puntos deben ser de 5 puntos y no se pueden modificar. . . . . Realmente tmd ,,,,