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 !