実現したいこと
Listを編集した後、それを何らかの形式で保存する
その後、それを別のシーンで読み込む
###状況
現在TCGを作っているのですが、Listの保存に困っています。
C#
1デッキ編集シーンのスクリプト 2 3public class Deck1 : MonoBehaviour 4{ 5 static Deck1 Instance = null; 6 7 public static Deck1 GetInstance() 8 { 9 if (Instance == null) 10 { 11 GameObject obj = new GameObject("DeckObject1"); 12 Instance = obj.AddComponent<Deck1>(); 13 DontDestroyOnLoad(obj); 14 } 15 16 return Instance; 17 } 18 19 public List<GameObject> Player1Deck; 20 21 public GameObject BookPanel; 22 public GameObject InDeckPanel; 23 24 //カードのプレファブ 25 public GameObject CardA; 26 27 //カード一覧のボタン 28 public GameObject AddButtonKadan; 29 30 //デッキ一覧のボタン 31 public GameObject RemoveButtonKadan; 32 33 34 public void Start() 35 { 36 Player1Deck = new List<GameObject>(); 37 } 38 39 public void addCardA() 40 { 41 Player1Deck.Add(CardA); 42 } 43 44 public void RemoveCardA() 45 { 46 Player1Deck.Remove(CardA); 47 } 48} 49
このように、例えばCardAというカードがあり、ボタンでこのスクリプトのaddCardAやRemoveCardAを動かしてリストに対象のカードのprefabを入れています。そして、空のゲームオブジェクトにアタッチして、static Deck1〜から始まる部分でオブジェクトを維持しています。
ただこれだと、他のシーンに移動した時にインスペクターに登録したprefabなどが全てNoneになってしまい、最初にListを初期化しているので当然ですがもう一度このデッキ編集シーンを開くとListがリセットされてしまいます。どこかのサイト様で、Listを使う時はまず初期化をしないといけない、といったようなものを見たのですが、もしかして初期化しなくても大丈夫なのでしょうか?
なので、Listを任意のタイミングで保存して、他のシーンでもその状態で読み込みたいのですが、どうすればいいのでしょうか。
C#
1public void SaveDeck() 2 { 3 string SaveDeckData = JsonUtility.ToJson(Player1Deck); 4 Debug.Log(SaveDeckData); 5 } 6
途中にJson化も試してみましたが、CardAを入れていない状態/入れた状態でこのSaveDeckを呼び出した時、どちらもJson形式が変わっていませんでした。
調べた結果としてはListをJson化してPlayerPrefsで保存する、というところでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/08 08:31