2015-03-16 16 views
18

Pracuję nad grą wykorzystującą Unity3D w wersji 5. Gra powinna używać ścisłych reguł biznesowych już zaprogramowanych w silniku C# .NET4.5. Korzystając z Xamarin/Mono, mamy nadzieję, że będzie to możliwe w Windows, Androidzie i innych ...Używanie kodu .NET 4.5 w Unity 5

Próbowałem zbudować silnik w dll i używać go jako zarządzanego wtyczki w Unity. Ale Unity używa starej wersji Mono, aby skompilować całą grę i nie chce używać bibliotek .NET 4.5.

Naprawdę potrzebuję użyć tego kodu, spojrzałem na obniżenie go do .NET 3.5, ale nie jest to dopuszczalne rozwiązanie, biorąc pod uwagę pracę wykonaną już w silniku.

Jeśli chodzi o Androida, to myślę, że używam Xamarina, aby uzyskać natywny kod Androida i używać go jako natywnej wtyczki w Unity. Teraz potrzebuję rozwiązania dla systemu Windows. Szukam sposobów, aby użyć kodu C# w C++, aby utworzyć niezarządzanego dll, ale ja walczę o zrozumienie, który sposób ma zastosowanie tutaj między współdziałaniem COM, C++/CLI lub innymi metodami.

Czy ktoś wie, w jaki sposób dołączyć kod z .NET 4.5 w Unity bez wysiłku?

+0

trzeba będzie dokonać klasy lib PCL klasy lib – Ewan

+0

@Ewan: Wydaje mi się, że nie Unity akceptuj PCL do czegokolwiek innego niż aplikacje Windows8/8.1. Co więcej, PCL jest obsługiwany tylko z .NET 4.0+ – Warrows

+0

czy mylisz to z nowymi materiałami core .net dla wygranej 8? Ive zrobione rzeczy PCL dla mono na iphone xamarin musisz mieć zainstalowaną ramkę mono, aby móc targetować to – Ewan

Odpowiedz

8

Używanie wtyczki wizualnego studio: unmanaged exports, Byłem w stanie wyeksportować C# .NET 4.5 do niezarządzanego/natywnego pliku dll, który mogę użyć w Unity Engine. Wymusza to wywoływanie tylko prostych funkcji, ale przy niewielkiej pracy można było opakować rdzeń mojego silnika.

+2

używasz 'dynamic',' Async/Await' etc w twoim silniku? jeśli tak, proszę podać kilka wskazówek, jak je zawinąć. –

+0

To było miesiąc temu w profesjonalnym projekcie, w którym nie mam już dostępu do kodu. Ale jeśli dobrze pamiętam, miałem Async/Await w kodzie, ale nie musiałem ich wywoływać przez opakowanie, więc było to całkiem proste. – Warrows

+0

tak długo, jak, powiedzmy, sprawdzanie w pętli aktualizacji jakiejś kolekcji dla poleceń przychodzących (przypuszczam, że kolekcja musi być zablokowana) i produkować niektóre wiadomości z subskrybentami "na drugim końcu", wszystko w porządku? jakie platformy aplikacja miała być uruchamiana (lub była uruchamiana)? –

6

Krótka odpowiedź brzmi: nie.

Unity ma "funkcjonalność ery .NET 2.0/3.5", zgodnie z official blog post.

Zgodnie z tym samym stanowiskiem, przyszłej wersji Unity zostanie uaktualniona do "nowoczesnej wersji .NET", bez podanego czasu dla tego dużego przedsiębiorstwa.

UWAGA: Ta odpowiedź została napisana w odpowiedzi na oryginalną wersję pytania, co było po prostu tym, czy bibliotekę .NET 4.5 można użyć bezpośrednio w Unity.

+0

Podaje się krótką odpowiedź: nie. Ale jaka jest długa historia? Naprawdę potrzebuję użyć tego kodu, zajrzałem do obniżenia go do .NET 3.5, ale nie jest to dopuszczalne rozwiązanie, biorąc pod uwagę pracę wykonaną już w silniku. Jeśli chodzi o Androida, to myślę, że używam Xamarina, aby uzyskać natywny kod Androida i używać go jako natywnej wtyczki w Unity. Teraz potrzebuję rozwiązania dla systemu Windows.Szukam sposobów, aby użyć kodu C# w C++, aby utworzyć niezarządzanego dll, ale ja walczę o zrozumienie, który sposób ma zastosowanie tutaj między współdziałaniem COM, C++/CLI lub innymi metodami. – Warrows

+0

Nawet gdybyś mógł przejść na wersję 3.5, nie ma gwarancji, że to zadziała, ponieważ Unity nie ma pełnego wsparcia 3.5. Unity obsługuje macierzyste wywołania systemu Windows, ale jak przekonwertować bibliotekę do macierzystego systemu Windows, obawiam się, że nie wiem. Powodzenia! – Ghopper21

+0

Dzięki, edytuję pytanie, aby być bardziej precyzyjnym. – Warrows