Es un inconveniente almacenar o enviar el código de extensión en el editor de proyectos actual
La misma funcionalidad extendida debe usarse en múltiples proyectos (editores)
Durante el desarrollo del proyecto, ocasionalmente se necesita usar una función temporalmente, y si desea usarla en cualquier momento, puede desinstalarla en cualquier momento.
Ideas de diseño
Usando la inyección de proceso, c/c++ dllinyecte uno en el editor de Unity que se está ejecutando actualmente
Use la interfaz de función llamada, como para c/c++ dllobtener la dinámica de la unidad para cargar la extensión externa que desea cargarmonomono_get_root_domaindomainc# dll
c# dllLlamado en la extensión EditorUtility.RequestScriptReload();para desencadenar la recompilación del editor de Unity, sobrecargando la implementación en el editor para descargar funciones domainexternasc# dll
c# dllEnlace eventos en extensiones EditorApplication.updatepara manejar operaciones en el subproceso principal, comoAssetDatabase.Refresh();
Usando jsonrpcel protocolo, se usa para llamar c# dlla parte de la función de encapsulación, que puede mostrar directamente la ventana de extensión en el editor de Unity, o transferir los datos a otros editores para su visualización.