我最近一直在使用教程制作游戏。不幸的是,他们没有涵盖保存分数功能。多亏了另一个用户,我才知道我需要使用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

最佳答案

请注意,PlayerPrefs是保存数据的简便方法,但也是非常不安全的方法。播放器可以轻松操纵其“ 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;
 }

关于unity3d - 使用PlayerPrefs(统一),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39015560/

10-13 06:57