2012-11-04 5 views
5

Ich muss ein Unity-Skript erstellen, um einige 3D-Modelle zu importieren und exportieren. Ich versuche, Servicestack.Redis aus meinem Skript zu referenzieren, damit ich mit redis sprechen kann. Es kompiliert gut, aber Einheit wird die Bibliothek nicht laden.Wie referenziere ich die ServiceStack-Bibliothek in einem Unity C# -Skript?

Ich habe die DLL von Build/Release/MonoDevelop/SericeStack.Redis.zip in mein Vermögen Ordner in der Einheit kopiert, (ist das richtig?) Ich habe gerade ServiceStack von https://github.com/ServiceStack/ServiceStack.Redis

Klonen Wenn Unity versucht, lade das Skript es sagt

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 

Mein Code ist bis jetzt das. Es ist ein Editor-Skript. Es macht einfach ein Fenster mit einem Button und wenn die Schaltfläche geklickt wird es versucht, eine Verbindung auf localhost Redis und einen Schlüssel

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"); 
     } 
    } 
} 

Ich bin wahrscheinlich richtig einfach nicht die Bibliothek erhalten verweisen. Ich bin ziemlich neu in kompilierten Sprachen.

Antwort

1

Ich hatte einen Fehler ähnlich. Aber es war ohne benutzerdefinierte dlls. Der Grund war, weil ich Func in meinem Code verwendet habe. Mono hat keine Unterstützung für Func. Ich habe versucht, den Quellcode für die DLLs herunterzuladen und sie verwenden ziemlich viel Func. Das ist wahrscheinlich der Grund, warum Sie diesen Fehler bekommen.

+0

Leider Einheit verlassen verursacht hat mich haben, die Anzahl der Mono und Einheit Inkompatibilitäten findet Ich fand und meinen Exportprozess in Python neu zu schreiben. – Nathan

1

Ich weiß, das ist ein wenig alt, aber es zeigte sich in meinen Suchergebnissen. Stellen Sie daher für alle anderen, die dieses Problem haben, sicher, dass Ihre Unity-Projekteinstellungen auf .Net 2.0 statt .Net 2.0 Subset festgelegt sind.

Das Menü kann File -> Build Settings -> Player Settings -> Optimization.

Verwandte Themen