5

一部の 3D モデルをインポートおよびエクスポートするには、Unity スクリプトを作成する必要があります。redis と通信できるように、スクリプトから Servicestack.Redis を参照しようとしています。コンパイルはうまくいきますが、ユニティはライブラリをロードしません。

Build/Release/MonoDevelop/SericeStack.Redis.zip から Unity 内のアセット フォルダーに dll をコピーしました (正しいですか?) https://github.com/ServiceStack/ServiceStack.Redisのクローンを作成して ServiceStack を取得しました。

Unity がスクリプトをロードしようとすると、次のように表示されます

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 

これまでの私のコードはこれです。エディタスクリプトです。ボタン付きのウィンドウを作成するだけで、ボタンがクリックされると、localhost の redis に接続してキーを取得しようとします。

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

ライブラリを正しく参照していないだけかもしれません。私はコンパイル済み言語にかなり慣れていません。

4

2 に答える 2

1

それに似たバグがありました。しかし、カスタムdllはありませんでした。その理由は、コード内でFuncを使用したためです。MonoはFuncをサポートしていません。dllのソースコードをダウンロードしようとしましたが、非常に多くのFuncを使用しています。したがって、おそらくそれがエラーが発生する理由です。

于 2012-11-12T06:32:57.060 に答える
1

これは少し古いことは知っていますが、検索結果に表示されました。したがって、この問題を抱えている他の人は、Unity プロジェクトの設定が.Net 2.0ではなく に設定されていることを確認してください.Net 2.0 Subset

メニューが見つかりますFile -> Build Settings -> Player Settings -> Optimization.

于 2014-07-30T13:54:55.483 に答える