Unity modifica UnityEditor.DLL

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 ,,,,

Supongo que te gusta

Origin blog.csdn.net/K20132014/article/details/89217298
Recomendado
Clasificación