2

System.Web.Script.Serialization.JavaScriptSerializer.NETを使用して、MacOS上のMonoDevelopを使用してUnityの辞書にJSONファイルを読み込もうとしています。

これまでSystem.Web.Extensions、MonoDevelopにアセンブリを追加して、「Assembly-CSharp」プロジェクトを正常にビルドできるようにしました。

しかし、Unityに戻ると、エラーが表示されます。エラーCS0234:タイプまたは名前空間名`Web'は名前空間`System'に存在しません。アセンブリ参照がありませんか?

次に、アセットフォルダのどこかにDLLを追加することで実行できることをウェブ上で読んだので、System.Web.Extensions.dllMonoDevelopのパス内にファイルのいくつかのバージョンが見つかりました。それらは次の場所にあります。/Applications/Unity/MonoDevelop.app/Contents/Frameworks/Mono.framework/Versions/2.10.2/lib/mono/gac/System.Web.Extensions

ファイルのバージョンが異なる3つのフォルダがあります:1.0.61025.0__31bf3856ad364e353.5.0.0__31bf3856ad364e35および4.0.0.0__31bf3856ad364e35

それらすべてを試しましたが、どれも機能しません。Unityはこのエラーを出します:

Internal compiler error. See the console log for more information. output was:
Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies.
File name: 'System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
  at (wrapper managed-to-native) System.Reflection.Assembly:InternalGetType (System.Reflection.Module,string,bool,bool)
  at System.Reflection.Assembly.GetType (System.String name, Boolean throwOnError, Boolean ignoreCase) [0x00000] in <filename unknown>:0 
  at System.Reflection.Assembly.GetType (System.String name) [0x00000] in <filename unknown>:0 
  at Mono.CSharp.RootNamespace.GetTypeInAssembly (System.Reflection.Assembly assembly, System.String name) [0x00000] in <filename unknown>:0 
  at Mono.CSharp.RootNamespace.LookupTypeReflection (Mono.CSharp.CompilerContext ctx, System.String name, Location loc, Boolean must_be_unique) [0x00000] in <filename unknown>:0 
  at Mono.CSharp.GlobalRootNamespace.LookupTypeReflection (Mono.CSharp.CompilerContext ctx, System.String name, Location loc, Boolean must_be_unique) [0x00000] in <filename unknown>:0 
  at Mono.CSharp.Namespace.LookupType (Mono.CSharp.CompilerContext ctx, System.String name, Location loc) [0x00000] in <filename unknown>:0 
  at Mono.CSharp.Namespace.Lookup (Mono.CSharp.CompilerContext ctx, System.String name, Location loc) [0x00000] in <filename unknown>:0 
  at Mono.CSharp.TypeManager.CoreLookupType (Mono.CSharp.CompilerContext ctx, System.String ns_name, System.String name, Kind type_kind, Boolean required) [0x00000] in <filename unknown>:0 
  at Mono.CSharp.TypeManager.InitCoreTypes (Mono.CSharp.CompilerContext ctx) [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   

ならどうしよう?

4

2 に答える 2

1

Unityは、.NET 4をサポートしない古いバージョンのMonoを使用しています。System.Webにはほとんどの場合ゲーム開発者には関係のないASP.NETが含まれているため、System.Web.dllも削除してスリム化すると思います。

Monoのdllをコピーできる場合がありますが、System.Web.dllのv2.0とSystem.Web.Extensions.dllのv3.5を使用していることを確認してください。

または、JSON.NETを試すこともできます。

于 2012-12-26T00:08:38.367 に答える
0

データをシリアル化してみてくださいBinaryFormatter+ MemoryStream+TextAsset

BinaryFormatter+ MemoryStream: オブジェクト <==> バイト[]

TextAsset.bytesバイナリデータファイルに使用されます。

于 2013-01-07T15:18:10.813 に答える