Je travaille sur un jeu utilisant Unity3D version 5. Le jeu doit utiliser des règles métier strictes déjà programmées dans un moteur C # .NET4.5. En utilisant Xamarin/Mono, nous espérons rendre cela utilisable sur Windows, Android, autres ...
J'ai essayé de construire le moteur dans une DLL et de l'utiliser comme plugin géré dans Unity. Mais Unity utilise une ancienne version de Mono pour compiler l'ensemble du jeu et refuse d'utiliser les DLL .NET 4.5.
J'ai vraiment besoin d'utiliser ce code, j'ai envisagé de le rétrograder vers .NET 3.5 mais ce n'est pas une solution acceptable étant donné le travail déjà fait sur le moteur.
Concernant Android, je pense que d'utiliser Xamarin pour obtenir le code natif Android et l'utiliser comme plugin natif dans Unity. Maintenant, j'ai besoin d'une solution pour Windows. Je cherche des moyens d'utiliser le code C # en C++ pour créer une dll non managée mais je n'arrive pas à comprendre quel chemin est applicable ici entre COM interop, C++/CLI ou d'autres méthodes.
Est-ce que quelqu'un connaît un moyen d'inclure du code à partir de .NET 4.5 dans Unity sans/peu d'effort?
En utilisant un plugin Visual Studio: exportations non managées , j'ai pu exporter le C # .NET 4.5 vers une dll non managée/native que je peux utiliser dans Unity Engine. Cela oblige à appeler uniquement des fonctions simples, mais avec peu de travail, il m'a été possible d'envelopper le cœur de mon moteur.
Il semble que Unity passe à la version 4.6+ et est maintenant disponible en version bêta
https://forum.unity3d.com/threads/upgraded-mono-net-in-editor-on-5-5-0b4.433541/
La réponse courte est non.
Unity dispose de "fonctionnalités de l'ère .NET 2.0/3.5", selon un article de blog officiel .
Selon le même article, une future version d'Unity sera mise à niveau vers "une version moderne de .NET", sans calendrier pour cette entreprise majeure.
REMARQUE: cette réponse a été écrite en réponse à la version originale de la question, qui était simplement de savoir si la bibliothèque .NET 4.5 pouvait être utilisée directement dans Unity.