我最近一直在创建一个包含教程的游戏。不幸的是,他们没有涵盖保存评分功能。感谢另一位用户,我能够发现我需要使用playerprefs。我在线观看教程,但没有一个是有用的。如果可以,请帮助我!
Gold Per Sec脚本:
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);
}
}
}
Gold Per Click脚本:
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 :(得分:3)
您可以使用Unity的现有功能来实现此目的。
为了保存数据,请使用Unity的OnApplicationQuit函数,如下所示
void OnApplicationQuit() {
PlayerPrefs.SetFloat("key", value);
}
为了恢复价值,请使用Unity这样的清醒功能
void Awake(){
value = PlayerPrefs.GetFloat("key");
}
答案 1 :(得分:1)
将以下代码添加到Click
类:
void Awake()
{
LoadData();
}
void OnApplicationQuit()
{
SaveData();
}
void SaveData()
{
PlayerPrefs.SetFloat("gold",gold);
}
void LoadData()
{
gold = PlayerPrefs.GetFloat("gold",0f);
}
答案 2 :(得分:1)
请注意,PlayerPrefs是一种保存数据的简便方法,但也是一种非常不安全的方式。玩家可以轻松操纵他的" goldValue"因为它只是在他的设备上的某个文件中存储为整数。 PlayerPrefs通常只能用于玩家可以在游戏中以任何方式改变的值,如音量设置等。
示例代码
$ mkdir $GOPATH/src/github.com/go-sql-driver/mysql
$ pushd $GOPATH/src/github.com/go-sql-driver
$ git clone https://github.com/go-sql-driver/mysql.git
$ popd