Para mi lo mejor de Unity3D es:
- Multiplataforma (ya veo que estais en ello

)
- Sistema de Game Object Components (en C# es muy fácil de hacer con herencia).
- Poder "editar de manera visual" los componentes de los GameObject.
- Crear nuevos componentes, es tan facil como derivar un objeto. Las "miembros" públicos se serializan siempre, lo que sirve para cargar/guardar automaticamente y se muestran en el inspector para su edición. (Esto también es fácil y sencillo, solo hay que tirar de reflexion al cargar/salvar y al "seleccionar" un gameObject, lo que muestra en el "inspector" su "contenido en componentes").
Como contrapartida se puede hacer con "Propiedades" en vez de con "Miembros Públicos" que es lo "típico" que inspecciona el "PropertyGrid".
- Scripts para modifcar la "Pipeline de Importación" de manera "relativamente sencilla" (bastante más que los importadores de XNA).
- Ampliación del "Editor". Crear nuevos menus, poder interaccionar con la mayoria de las interfaces de acceso del editor, etc.
- Provee "Abstracción de plataforma", para la mayoria de "requerimientos" de TRC/Lotcheck, y "classes especificas" para las "features" especificas de plataforma ("Acelerometro", "Wii Balance Board", etc).
- La "pro" ya tiene muchas cosas integradas: Umbra, el nuevo "Beast", Physix, ...
Y lo peor:
- Mono en consolas NO MOLA. El gc es una *****, he visto un artículo interesante sobre hacer un gc incremental para Mono
http://static.usenix.org/event/vm04/wips/goh.pdf, pero tampoco me lo he mirado mucho, y no sé si te puede valer de algo, pero en fin ...
- La implementación del "Dynamic Game Object Component System" es "extradamente" OOP, cosa "reforzada" por el echo de los compoenetes MonoBehaivour, que "exportan" una interfaz puramente OOP. Esto no seria malo, si no fuese por dos razones: dispositivos con caches pequeñas, y/o con PowerPC. Las cache misses van a ser un problema en todos los dispositivos con cache pequeñas, pero el "polimorfismo" da mayores signos de "ineficiencia" en PowerPCs, que en x86 o ARM.
Hay una implementación "muy curiosa", que utiliza Insomniac a partir para el "Resistance 1" y que se "establece" en el "Resistance 2". Es tremendamente más efectivo, DOD (aunque la interfaz puede parefcer OOP), cache friendly, multi-processor scalable, y permite offloads a SPUs.
http://www.insomniacgames.com/wp-content/uploads/2011/06/6-1-2010.pdfEstà en C++, y yo he probado implementar alguna cosa, aunque ahora tengo un sistema de GameObjects "light monolithic / static defined components" como el de Uncharted 2.
De todas formas, una de las cosas más interesantes, es el uso de las "Roster Pool", que yo he incluido en varios sistemas de nuestro engine (aunque en nuestro está en C++, la idea es muy parecida en C#).
- Dificil integración en algunos casos de un Sistema de Control de versiones para el manejo del "Content". El suyo propio no está mal, pero no es la panacea.
No sé si añadiria algo más, de todas formas es solo mi opinión.
Un saludo, y suerte!

PS: En cuanto a precios, no sé que decirte, pero varia bastante dependiendo de lo "cerrado" que puedas entregar el SDK o engine, cuando más código fuente tengas que pasar, más deberia de valer la licencia (por obvias razones).