es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

UNITY_EDITOR indefinido in Visual Studio

Estoy depurando un código desde el editor de Unity que comienza con #if UNITY_EDITOR, pero UNITY_EDITOR no se está definiendo aunque esté ejecutando Visual Studio a través del editor de Unity. He intentado lo siguiente:
– Asegurarme de que tengo Visual Studio configurado en el modo de Depuración (vs. Lanzamiento)
– La configuración de los Símbolos de Definición de Script y las soluciones msc y csc de aquí: http://docs.unity3d.com/Documentation/Manual/PlatformDependentCompilation.html?ga=2.148389495.1394951635.1638832224-1796620461.1636419298

También he intentado añadir simplemente una #define a las hojas del proyecto que Unity está generando, lo cual no funciona porque no hay archivos de proyecto en los que se estén abriendo y depurando estos archivos. Además, he regenerado los archivos de solución. ¿Qué me estoy perdiendo? ¡Gracias!

Edición:

Alguna información adicional importante: este comportamiento no está ocurriendo en todos los archivos dentro de la instancia de Visual Studio, sólo en los archivos que NO están incluidos en ninguno de los .csproj de la solución que tengo abierta. Por lo tanto, mi espacio de trabajo son .csproj que tienen definido UNITY_EDITOR, pero el archivo que estoy abriendo está fuera de ese proyecto. En este caso, el archivo .cs en el que estoy intentando depurar está en un paquete que se está ejecutando, por lo que el depurador entrará en él, pero no se genera ningún archivo .csproj para este paquete.

Me parece que aquí debería haber un comportamiento diferente, pero no estoy seguro de cuál es. ¿Debería Unity crear un archivo .csproj para los paquetes cuyos archivos .cs se puedan depurar para poder verlos correctamente en Visual Studio?

Así que, finalmente: en el contexto de los .csproj existentes que tengo abiertos, si añado una línea <Compile Include="Ruta\Completa\Hacia\Archivo.cs" />, funciona como se desea. Un poco chapucero, pero funciona para mis propósitos.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está relacionado con el hecho de que el archivo que estás intentando depurar está fuera del archivo del proyecto. Dado que Unity solo genera archivos de proyecto para los scripts que están incluidos en el proyecto, el archivo que estás intentando depurar no está siendo incluido, de ahí que el símbolo UNITY_EDITOR no esté definido.

    Una solución, como mencionaste, es agregar manualmente el archivo al archivo del proyecto incluyendo la línea <compile include="Ruta\Completa\Al\Archivo.cs"></compile>. Esto obligará a que el archivo se incluya en el proyecto y el símbolo UNITY_EDITOR estará definido.

    Otra posible solución es crear un nuevo proyecto de Unity en C#, agregar el paquete que contiene el archivo a este proyecto y luego abrir ese proyecto en Visual Studio. Esto asegurará que se generen archivos de proyecto para todos los archivos, incluido el que deseas depurar.

    Alternativamente, podrías intentar utilizar un enfoque diferente para depurar el código, como adjuntar Visual Studio al proceso de Unity a través del menú de depuración, en lugar de abrir directamente el código en Visual Studio. Esto podría ayudar a garantizar que los símbolos correctos estén definidos.

    En cualquier caso, es importante recordar que depurar código externo puede ser complicado y puede requerir algo de prueba y error para encontrar el mejor enfoque para tu situación específica.

Comments are closed.