2016-07-20 6 views
1

ゲームを保存しようとするとエラーが表示されるのはなぜですか?ゲームを保存しようとするとエラーが表示されるのはなぜですか? Unity C#

以下

は私のスクリプトです:

player.cs

using UnityEngine; 
using System.Collections; 
using System.Collections.Generic; 
using System.Runtime.Serialization.Formatters.Binary; 
using System.IO; 

public class player : MonoBehaviour { 
    public List<item> itemRaw = new List<item>(); 
    public List<item> itemVal = new List<item>(); 
    public List<item> itemAdm = new List<item>(); 
    public upgradeStorage OnUpStorage1Raw; 
    public upgradeStorage OnUpStorage2Raw; 
    public upgradeStorage OnUpStorage3Raw; 

    public int RawStorage1Level = 0; 
    public int totalSlotRawStorage1; 
    public int RawStorage2Level = 0; 
    public int totalSlotRawStorage2; 
    public int RawStorage3Level = 0; 
    public int totalSlotRawStorage3; 


    public bool RawStorage2Unlock = false; 
    public bool RawStorage3Unlock = false; 


    public string name; 
    public int level; 
    public int exp; 
    public int coin = 1000000; 
    public int gem = 30000; 

    public List<GameObject> slotRaw = new List<GameObject>(); 
    public List<GameObject> slotVal = new List<GameObject>(); 
    public List<GameObject> slotAdm = new List<GameObject>(); 

    public List<item> margaretItemSell = new List<item>(); 
    public List<item> margaretItemBuy = new List<item>(); 
    public List<productMerchant> productMargaretSell = new List<productMerchant>(); 
    public List<productMerchant> productMargaretBuy = new List<productMerchant>(); 
    public Dictionary <string, Dictionary <string, int> > productSellMargaret; 
    public Dictionary <string, Dictionary <string, int> > productBuyMargaret; 

    public player() { 

    } 

    void Awake() { 
     Load(); 
    } 

    void Update() { 
     Save(); 
     Debug.Log ("Coin : " + coin); 
    } 

    public void Save() { 
     BinaryFormatter bf = new BinaryFormatter(); 
     FileStream file = File.Create (Application.persistentDataPath + "/saveGame.gd"); 
     playerData data = new playerData(); 

     data.itemRaw = itemRaw; 
     data.itemVal = itemVal; 
     data.itemAdm = itemAdm; 

     bf.Serialize (file, data); 
     file.Close(); 
    } 

    public void Load() { 
     if(File.Exists(Application.persistentDataPath + "/saveGame.gd")) { 
      BinaryFormatter bf = new BinaryFormatter(); 
      FileStream file = File.Open (Application.persistentDataPath + "/saveGame.gd", FileMode.Open); 
      playerData data = (playerData) bf.Deserialize (file); 
      file.Close(); 

      itemRaw = data.itemRaw; 
      itemVal = data.itemVal; 
      itemAdm = data.itemAdm; 

     } 
    } 
} 

と私は別のスクリプトクラスは、シリアライズ持っている:

playerData.cs

using UnityEngine; 
using System.Collections; 
using System.Collections.Generic; 

[System.Serializable] 
public class playerData { 
    public List<item> itemRaw = new List<item>(); 
    public List<item> itemVal = new List<item>(); 
    public List<item> itemAdm = new List<item>(); 


} 

私はこのエラーしばらくましたメソッドsave()またはload()

*EndOfStreamException: Failed to read past end of stream. 
System.IO.BinaryReader.ReadByte() (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.IO/BinaryReader.cs:293) 
System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadValue (System.IO.BinaryReader reader, System.Object parentObject, Int64 parentObjectId, System.Runtime.Serialization.SerializationInfo info, System.Type valueType, System.String fieldName, System.Reflection.MemberInfo memberInfo, System.Int32[] indices) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/ObjectReader.cs:727) and bla bla blab bla...........* 

このスクリプトは保存して読み込むだけです。

ありがとう

答えて

1

私は自分自身で解決策を得ました。

このエラーは、私のアイテムクラスにはgameobject型があり、playerDataクラスにはgameObject型もあるためです。

ゲームをバイナリ形式で保存することは許可されていません。

アイテムクラスとplayerDataクラスからゲームオブジェクトタイプを削除します。

ありがとうございました

+0

こんにちは@dennisliu、あなたはそれを動作させましたか? – Fattie

+0

こんにちは@JoeBlow、はい、現在動作しています..問題はgameobjectデータ型です。セーブデータ使用バイナリフォーマッタ使用のgameobjectデータ型は許可されていません。 –

関連する問題