2016-05-19 7 views
1

オンラインユニティゲーム用のテストアプリケーションを作成しようとしていますが、必要な処理を行うために、.prefabファイルにある16進オフセットからデータを読み込む必要があります。 そして、私はデータからサーバー側にプレハブをロードします。クライアント側からのアンチ・コライダー・ハックの場合。Unity3Dのプレハブファイルからデータを読み取る方法は?

私はunityVer、localScale、localPosition、localSize、コライダーのサイズのような件のデータを読まなければならない...など

編集:私はないユニティでは、簡単なコンソールアプリケーションでそれをしなければなりません。

私はコードに動作していない:私は任意のヘルプは素晴らしいだろうHEXデータの場所に位置してデータの読み書きに新しいです

HEX TREE IMAGE

try { 
      string[] prefabFiles = Directory.GetFiles(Path.Combine(Environment.CurrentDirectory, "data\\prefabs\\")); 
      foreach (var prefab in prefabFiles) { 
       if (prefab != null && prefab.Split('.')[1] == "prefab") { 
        try { 
         using (var reader = new BinaryReader(new FileStream(prefab, FileMode.Open, FileAccess.Read))) { 
          FileInfo info = new FileInfo(prefab); 
          Console.WriteLine("Analyzing File : " + info.Name); 

          reader.BaseStream.Position = 0xA; 

          //string unityVer = reader... 

          //float localPositionX = reader... 
          //float localPositionY = reader... 
          //float localPositionZ = reader... 

          //float localScaleX = reader... 
          //float localScaleY = reader... 
          //float localScaleZ = reader... 

          //float colliderRadius = reader... 
         } 
         Console.WriteLine("File parse success."); 
        } catch { Console.WriteLine("Parse error in the data file."); } 
       } 
      } 
     } catch (Exception e_Ex) { 
      Console.WriteLine(e_Ex.ToString()); 
     } 

マイプレハブの六角ツリー!

+0

私はあなたが良いクラッカーでない限り、ドキュメントはプレハブバイナリファイルの構造を説明することなく、あなたは、それを行うことができなくなることを恐れています。この世界の解決策のうち、unity3dソースファイルを取得し、プレハブを解析するためのC++ファイルのrepsonsibleをチェックするか、それをドキュメント化するための単一性を求めることです。しかし、私は間違っているかもしれません、多分誰かがあなたを助けるでしょう。 –

答えて

1

私はあなたがあまりにもハードしようとしていると思いますか、私はあなたのポイントを誤解。

プロジェクトで参照されているプレハブを持っている場合、Unityはそれのインスタンスを作成しますが、それだけのシーンでは表示されませんし、内部に保持されます。それでインスタンス化を使用すると、すべての情報とデータが複製されます。あなたはどんなゲームオブジェクト上でそれらにアクセスするプレハブのと同じ方法で情報にアクセスできることを意味します

public GameObject myPrefab; 

void Start(){ 
    Debug.Log(myPrefab.transform.position); 
    Collider col = myPrefab.GetComponent<Collider>(); 
    // Use Collider 
} 
+0

ああ、私は通常のC#プロジェクトのデータを読み込む必要があります。ユニティでいいです、読むのは簡単です。しかし、必要はありません。統一に依存します。 (ありがとう... –

0

部分的な答えは、YAMLのテキストではなくバイナリのファイルとして資産を保存することです。そのフォーマットは人間が読める形式であるため、デコードがはるかに簡単です。 プロジェクトの設定の下 - >エディタフォーステキストに設定する必要があります資産シリアライズは、あります。もちろん、既存の資産はすべて再インポートされ、既存のビルドは再デプロイする必要があります。

関連する問題