2016-08-18 15 views
1

私は最近、チュートリアルでゲームを作成しています。残念ながら、彼らはセーブ・スコア機能をカバーしていませんでした。他のユーザーのおかげで、私はplayerprefsを使う必要があることを知ることができました。私はチュートリアルをオンラインで見ましたが、どれも役に立たなかった。あなたができるなら、私を助けてください!PlayerPrefs(ユニティ)の使用

ゴールド毎秒スクリプト:クリックしてスクリプトパー

using UnityEngine; 
using System.Collections; 

public class GoldPerSec : MonoBehaviour { 

    public UnityEngine.UI.Text gpsDisplay; 
    public Click click; 
    public ItemManager[] items; 

    void Start() { 
     StartCoroutine(AutoTick()); 
    } 

    void Update() { 
     gpsDisplay.text = GetGoldPerSec() + " Money Per Sec"; 
    } 

    public float GetGoldPerSec() { 
     float tick = 0; 
     foreach (ItemManager item in items) { 
      tick += item.count * item.tickValue; 
     } 
     return tick; 
    } 

    public void AutoGoldPerSec() { 
     click.gold += GetGoldPerSec()/10; 
    } 

    IEnumerator AutoTick() { 
     while (true) { 
      AutoGoldPerSec(); 
      yield return new WaitForSeconds(0.10f); 
     } 
    } 
} 

ゴールド:

using UnityEngine; 
using System.Collections; 

public class Click : MonoBehaviour { 

    public UnityEngine.UI.Text gpc; 
    public UnityEngine.UI.Text goldDisplay; 
    public float gold = 0.00f; 
    public int goldperclick = 1; 

    void Update() { 
     goldDisplay.text = "" + gold.ToString("F0"); 
     gpc.text = "Money Per Click: " + goldperclick; 
    } 

    public void Clicked(){ 
     gold += goldperclick; 
    } 

} 

私の考えたゲームは、ゲームが終了したとき保存し、できるだけ早くあなたがロードとしてロードするためでしたゲームのバックアップ。私は完全な初心者です、誰かが私にこれを行う方法を教えてくれたら、教えてください!ありがとう! :D

+0

のために使用すべきですか? –

+0

ゲームを終了したときに保存しておき、それを一度ロードすると、 –

+0

が開き、ゲームの状態(特定の変数の値)を保存できます。あなたの場合、それは金の価値かもしれません。私の答えを確認してください –

答えて

1

のような団結の目覚めの機能を使用しますが、非常に危険な方法です。プレーヤーは自分のデバイス上のあるファイルに整数として格納されているだけなので、彼の "goldValue"を簡単に操作できます。 PlayerPrefsは、通常はちょうどあなたが保存したいんどのような値の値プレイヤーがゲーム内で内の任意の方法を変更することができ、音量設定などのなど

のコード例

void Save() 
{ 
    string filename = "/filename.dat"; 
    BinaryFormatter bf = new BinaryFormatter(); 
    FileStream file = File.Create(Application.persistentDataPath+filename); 
    bf.Serialize(file, goldValue); //Use can easily use e.g. a List if you want to store more date 
    file.Close(); 
} 

    bool Load() 
{ 
    string filename = "/filename.dat"; 
    if (File.Exists(Application.persistentDataPath + filename)) 
    { 
     BinaryFormatter bf = new BinaryFormatter(); 
     FileStream file = File.Open(Application.persistentDataPath + filename, FileMode.Open); 
     goldValue=(int) bf.Deserialize(file); 
     file.Close(); 
     return true; 
    } 
    return false; 
} 
+0

ご協力いただきありがとうございます。私は把握することができた。どうもありがとう。 –

1

Clickクラスに次のコードを追加します。

void Awake() 
{ 
    LoadData(); 
} 

void OnApplicationQuit() 
{ 
    SaveData(); 
} 

void SaveData() 
{ 
    PlayerPrefs.SetFloat("gold",gold); 
} 

void LoadData() 
{ 
    gold = PlayerPrefs.GetFloat("gold",0f); 
} 
3

あなたはこれを達成するために団結の既存の機能を使用することができます。この

void OnApplicationQuit() { 
    PlayerPrefs.SetFloat("key", value); 
} 

のようなデータ使用団結のOnApplicationQuit機能を保存すると値を復元するための

がPlayerPrefsは、データを保存する簡単な方法であることに注意してください。この

void Awake(){ 
    value = PlayerPrefs.GetFloat("key"); 
} 
+0

私は試しましたが、うまくいきませんでした。 –

関連する問題