1

C# と Unrealscript の間で大量の情報を渡す方法を見つけようとしています。私が調査しようとしているものの 1 つは、C# が UnrealScript のクラスをシリアル化して後で読み込むことができるかどうかです。

C# でのシリアル化はそれほど悪くありません。

InfoToSerialize myInfo = new InfoToSerialize();
myInfo.i = 1;
myInfo.j = 2;
myInfo.str = "hello";

IFormatter formatter = new BinaryFormatter();

Stream stream = new FileStream("MyFile", FileMode.Create, FileAccess.Write, FileShare.None);
formatter.Serialize(stream, myInfo);
stream.Close();

この小さなコード スニペットは、MyFile という名前のバイナリ ファイルを正常に生成します。これは、かなりシリアル化されているように見えます。メモ帳アプリケーションで開くと、ほとんどのデータは判読できない記号とアイコンで構成されています。

私の質問: UnrealScript にこのファイルへのアクセスを許可し、デシリアライズすることは可能ですか? このトピックに関する私のこれまでの調査では、それは不可能のように見えますが、おそらくここのどこかでこの分野での経験がありました. UnrealScript には独自の保存および読み込み機能があることは知っていますが、それがこの作業に役立つかどうかはわかりません。どんな情報でも大歓迎です!

4

3 に答える 3

2

可能ですが、UnrealScript で利用できるものによっては、追加の作業が必要になる場合があります。.NET フレームワークは、いくつかの異なるシリアル化スキームをサポートしています。デフォルトの方法は、内部バイナリ形式にシリアル化することです。これは、同じ .NET プログラムから読み書きする必要がある場合にうまく機能します (また、プログラムがアップグレードを処理できる限り、バイナリ シリアル化は .NET フレームワークの異なるリリース間で中断する可能性があります)。しかし、これはあなたのケースではまったく機能しません。.NET フレームワークで書かれていないプログラムからオブジェクトを読み取ることができる必要があります。

幸いなことに、シリアル化方法を変更する方法もあります。たとえば、XML へのシリアル化を選択できます。.NET フレームワークが提供するシリアライザーが UnrealScript で読み取れない場合は、必要なフォーマットに書き込む独自のシリアライザーを作成できます。

この MSDN リンクには、シリアル化に関する詳細情報があります。

于 2014-01-06T15:08:42.390 に答える
1

BinaryFormatter で使用される形式は .NET にかなり固有のものであり、UnrealScript での簡単なシリアル化には利用できない .NET 型情報に依存しています。

ただし、JSON 解析は UDK で利用できると思いますが、おそらく実際のデシリアライズのほとんどを手動で行う必要があります。.NET から JSON にシリアル化する方法は複数あり、JSON は手動でも簡単にシリアル化できます。

高速な JSON シリアル化のためにJSON.NET ( http://json.codeplex.com/ ) を使用できます。

于 2014-01-06T15:13:09.137 に答える