2012-11-04 21 views
5

Muszę wykonać skrypt Unity, aby zaimportować i wyeksportować niektóre modele 3D. Próbuję odwołać się do Servicestack.Redis z mojego skryptu, aby móc rozmawiać z redis. Kompiluje się dobrze, ale jedność nie załaduje biblioteki.Jak odwołać się do biblioteki ServiceStack w skrypcie Unity C#?

Mam skopiowane dll z Build/Release/MonoDevelop/SericeStack.Redis.zip w folderze moim aktywów w jedności (czy to prawda?) Właśnie ServiceStack przez klonowanie https://github.com/ServiceStack/ServiceStack.Redis

Kiedy próbuje Unity wczytaj skrypt, który mówi:

Internal compiler error. See the console log for more information. output was: 
Unhandled Exception: System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded. 
    at (wrapper managed-to-native) System.Reflection.Assembly:GetTypes (bool) 
    at System.Reflection.Assembly.GetTypes() [0x00000] in <filename unknown>:0 
    at Mono.CSharp.RootNamespace.ComputeNamespaces (System.Reflection.Assembly assembly, System.Type extensionType) [0x00000] in <filename unknown>:0 
    at Mono.CSharp.RootNamespace.ComputeNamespace (Mono.CSharp.CompilerContext ctx, System.Type extensionType) [0x00000] in <filename unknown>:0 
    at Mono.CSharp.GlobalRootNamespace.ComputeNamespaces (Mono.CSharp.CompilerContext ctx) [0x00000] in <filename unknown>:0 
    at Mono.CSharp.Driver.LoadReferences() [0x00000] in <filename unknown>:0 
    at Mono.CSharp.Driver.Compile() [0x00000] in <filename unknown>:0 
    at Mono.CSharp.Driver.Main (System.String[] args) [0x00000] in <filename unknown>:0 

Mój kod jest do tej pory. To skrypt edytora. To właśnie sprawia, że ​​okno z przyciskiem i po kliknięciu przycisku próbuje połączyć się Redis na localhost i uzyskać klucz

using UnityEngine; 
using UnityEditor; 
using System.Collections; 
using ServiceStack.Redis; 

public class MyWindow : EditorWindow 
{ 

    // Add menu item named "My Window" to the Window menu 
    [MenuItem("Window/My Window")] 
    public static void ShowWindow() 
    { 
     //Show existing window instance. If one doesn't exist, make one. 
     EditorWindow.GetWindow(typeof(MyWindow)); 
    } 

    void OnGUI() 
    { 
     if (GUILayout.Button("Press to Rotate")) 
     { 
      ProcessAsset(); 
     } 
    } 

    void ProcessAsset() 
    { 
     using (var client = new RedisClient("localhost")) 
     { 
      client.Get ("hello"); 
     } 
    } 
} 

Jestem prawdopodobnie poprawnie tylko nie odwołuje się do biblioteki. Jestem całkiem nowym językiem do kompilacji.

Odpowiedz

1

Miałem błąd podobny do tego. Ale to bez żadnych niestandardowych bibliotek dll. Powodem było to, że użyłem Func w moim kodzie. Mono nie ma wsparcia dla Func. Próbowałem pobrać kod źródłowy dla bibliotek dll i używają sporo Func. Jest to prawdopodobnie przyczyna tego błędu.

+0

Niestety, liczba niezgodności mono i jedności Znalazłem spowodował mnie do porzucenia jedności i ponownie napisać proces eksportu w Pythonie. – Nathan

1

Wiem, że jest trochę stary, ale pojawił się w moich wynikach wyszukiwania. Dla każdego, kto ma ten problem, upewnij się, że ustawienia projektu Unity są ustawione na .Net 2.0 zamiast .Net 2.0 Subset.

W menu można znaleźć File -> Build Settings -> Player Settings -> Optimization.

Powiązane problemy