コードの動作に関する混乱を解消するために、「オブジェクト」クラス (float と数値のクラス) を取り、(バイナリ形式を使用して) ファイルに書き込み、IPFS.Net 実装を使用してファイルを書き込みます。ネットワーク。ファイルの作成は問題ありませんが、ファイルを保存すると Unity でコードが無期限にハングします。コードは以下のとおりです。
public static class IPFS_IO
{
public static void AddObject(Object obs)
{
string path = Application.persistentDataPath + "/data.bytes";
if (File.Exists(path))
{
File.Delete(path);
}
FileStream stream = File.Create(path);
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, obs);
stream.Close();
Task<Ipfs.IFileSystemNode> taskA = AddObjectSaveHash(path);
taskA.Wait();
//string hashpath = Application.persistentDataPath + "/hash.txt";
//StreamWriter writer = new StreamWriter(hashpath);
//writer.Write(hash);
//writer.Close();
}
async static Task<Ipfs.IFileSystemNode> AddObjectSaveHash(string path)
{
Batteries.Init();
using (var ie = new IpfsEngine("".ToCharArray()))
{
return await ie.FileSystem.AddFileAsync(path)
.ConfigureAwait(false);
}
}
これは一般的なデッドロックですか、それともネットワークに供給されるデータが多すぎるだけですか? 注意してください:
a) これは、Unity ゲーム エンジンで使用される C# 実装です。
b) Richard Schneiders の実装を使用しています (github: https://github.com/richardschneider/net-ipfs-engine )
皆さんが見つけることができる助けや問題をありがとう。