2012-12-25 4 views
2

.NET의 System.Web.Script.Serialization.JavaScriptSerializer을 사용하여 JSON 파일을 MacOS의 MonoDevelop와 함께 Unity에 사전으로 읽으려고합니다.Unity의 .NET JavaScriptSerializer와 MacOS의 MonoDevelop를 사용할 수 없습니다.

지금까지 "Assembly-CSharp"프로젝트를 잘 만드는 MonoDevelop에 System.Web.Extensions 어셈블리를 추가했습니다.

Unity로 돌아 가면 오류가 계속 표시됩니다. 오류 CS0234 : 네임 스페이스 'System'에 유형 또는 네임 스페이스 이름 'Web'이 없습니다. 어셈블리 참조가 누락 되었습니까? /Applications/Unity/MonoDevelop.app/Contents/Frameworks/Mono.framework/Versions/2.10.2/lib/mono/gac/System.Web.Extensions

3 개 폴더와이 있습니다 MonoDevelop의 경로 내부의 파일 System.Web.Extensions.dll의 일부 버전을

그런 다음 내가 폴더를 할 것 자산에 아무 곳이나 DLL을 추가 웹에서 읽기, 그래서 내가 발견, 그들은에 파일의 다른 버전 :

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 
,691,363 : 1.0.61025.0__31bf3856ad364e35, 3.5.0.0__31bf3856ad364e354.0.0.0__31bf3856ad364e35

그들 모두를 시도, 그러나 아무도는 작동하지 않습니다, 유니티이 오류를 제공합니다210

그럼, 지금 뭐야?

+0

오픈 소스 Mono 프로젝트에이 어셈블리를 추가하는 자원 봉사자가 있습니까? – bmargulies

+0

물론, 어떻게해야합니까? – Petruza

+0

유니티 태그는 Microsoft Unity 용입니다. 오용하지 마십시오. –

답변

1

Unity는 .NET 4를 지원하지 않는 이전 버전의 Mono를 사용합니다. System.Web에 주로 관련이없는 ASP.NET이 포함되어 있기 때문에 Unity가 System.Web.dll을 제거하여 제거했다고 생각합니다. 게임 개발자.

Mono의 dll을 통해 복사 할 수 있지만 System.Web.dll의 v2.0 및 System.Web.Extensions.dll의 v3.5를 사용해야합니다.

또는 JSON.NET을 사용해보십시오.

+0

고맙습니다. 유니티 - 모노는 고전적인 fopen fseek 방식을 포함하지 않는 파일로부터 데이터를 얻는 방법으로 내장되어 있습니까? 어쩌면 XML 또는 그와 유사한 구조입니다. 정기적 인 .ini 파일 파싱도 가능합니다. – Petruza

+0

유니티가 제거하거나 추가하는 것을 정확히 모르기 때문에 잘 모르겠습니다. XML의 경우 System.Xml.dll 및 System.Xml.Linq.dll에 액세스 할 수 있다고 가정합니다. 또는 ini 형식의 구문 분석을 위해 System.IO 클래스를 직접 사용할 수 있습니다. 특히 간단한 System.IO.File.ReadAllLines 클래스를 사용할 수 있습니다. –

0

시도 데이터를 직렬화 BinaryFormatter + + MemoryStreamTextAsset

BinaryFormatter + MemoryStream : 오브젝트 < ==> 바이트 []

TextAsset.bytes 이진 데이터 파일에 사용된다.