IUnityLinkerProcessor de Unity: análisis en profundidad y casos prácticos

Unidad IUnityLinkerProcessor

Unity IUnityLinkerProcessor es una interfaz en el motor de Unity, que permite a los desarrolladores vincular el código cuando se construye el proyecto de Unity. Esta interfaz se puede utilizar para optimizar el tamaño de construcción del proyecto, reducir el código y los recursos innecesarios y mejorar el rendimiento del proyecto y la velocidad de carga.

Definición de interfaz

La interfaz IUnityLinkerProcessor se define de la siguiente manera:

namespace UnityEditor.Build.IPA
{
    public interface IUnityLinkerProcessor
    {
        void OnBeforeRun(LinkXml linkXml);
        void OnProcessAssembly(string inputFile, string[] searchDirs, string outputFile);
    }
}

Entre ellos, se llama al método OnBeforeRun antes de que Unity compile el proyecto y se puede usar para procesar el archivo Link.xml. Se llama al método OnProcessAssembly cuando Unity compila el proyecto y se puede usar para procesar cada ensamblado de entrada.

Archivo de enlace.xml

El archivo Link.xml es un archivo XML en el proyecto de Unity que especifica los ensamblajes, tipos y miembros que deben conservarse. El formato del archivo Link.xml es el siguiente:

<linker>
  <assembly fullname="AssemblyName">
    <type fullname="TypeName" preserve="method" />
  </assembly>
</linker>

Entre ellos, el elemento de ensamblaje especifica el ensamblaje que debe conservarse y el atributo fullname especifica el nombre completo del ensamblaje. El elemento type especifica el tipo que se conservará, el atributo fullname especifica el nombre completo del tipo y el atributo preserve especifica el tipo de miembro que se conservará, que puede ser método, campo, propiedad, evento, etc.

Ejemplo de uso

A continuación, se brindan tres ejemplos de uso para demostrar cómo usar la interfaz IUnityLinkerProcessor para optimizar el tamaño de compilación de un proyecto de Unity.

Ejemplo 1: mantener el ensamblaje especificado

Especifique los ensamblajes que deben conservarse en el archivo Link.xml y se eliminarán otros ensamblajes.

<linker>
  <assembly fullname="Assembly-CSharp" />
</linker>

Lea el archivo Link.xml en el método OnBeforeRun de la interfaz IUnityLinkerProcessor y agregue los ensamblados que deben conservarse en LinkerOptions.

public void OnBeforeRun(LinkXml linkXml)
{
    foreach (var assembly in linkXml.Assemblies)
    {
        if (assembly.Fullname == "Assembly-CSharp")
        {
            LinkerOptions.LinkAssemblies.Add(assembly.Fullname);
        }
    }
}

Ejemplo 2: Conservar tipos y miembros especificados

Especifique los tipos y miembros que deben mantenerse en el archivo Link.xml, y se eliminarán otros tipos y miembros.

<linker>
  <assembly fullname="Assembly-CSharp">
    <type fullnameMyClass">
      <method signature="System.Void MyMethod()" />
    </type>
  </assembly>
</linker>

Lea el archivo Link.xml en el método OnBeforeRun de la interfaz IUnityLinkerProcessor y agregue los tipos y miembros que deben reservarse para LinkerOptions.

public void OnBeforeRun(LinkXml linkXml)
{
    foreach (var assembly in linkXml.Assemblies)
    {
        if (assembly.Fullname == "Assembly-CSharp")
        {
            foreach (var type in assembly.Types)
            {
                if (type.Fullname == "MyClass")
                {
                    foreach (var method in type.Methods)
                    {
                        if (method.Signature == "System.Void MyMethod()")
                        {
                            LinkerOptions.LinkType(type.Fullname);
                            LinkerOptions.LinkMethod(method.Signature);
                        }
                    }
                }
            }
        }
    }
}

Ejemplo 3: eliminar el ensamblaje especificado

Especifique el ensamblaje que debe eliminarse en el archivo Link.xml y se conservarán los demás ensamblajes.

<linker>
  <assembly fullname="Assembly-CSharp" remove="true" />
</linker>

Lea el archivo Link.xml en el método OnBeforeRun de la interfaz IUnityLinkerProcessor y agregue el ensamblado que debe eliminarse a LinkerOptions.

public void OnBeforeRun(LinkXml linkXml)
{
    foreach (var assembly in linkXml.Assemblies)
    {
        if (assembly.Remove)
        {
            LinkerOptions.DontLinkAssemblies.Add(assembly.Fullname);
        }
    }
}

Resumir

Mediante el uso de la interfaz IUnityLinkerProcessor de Unity y el archivo Link.xml, los desarrolladores pueden vincular proyectos de Unity, optimizar el tamaño de construcción del proyecto, reducir el código y los recursos innecesarios y mejorar el rendimiento del proyecto y la velocidad de carga. En el desarrollo real, puede usar de manera flexible el archivo Link.xml y la interfaz IUnityLinkProcessor según las necesidades del proyecto para lograr el mejor efecto de optimización.

¡Este artículo está publicado por OpenWrite, una plataforma de publicación múltiple para blogs !

Supongo que te gusta

Origin blog.csdn.net/alianhome/article/details/130912481
Recomendado
Clasificación