Unity为PlayerPrefs.SetFloat添加浮动

本文关键字:添加 SetFloat PlayerPrefs Unity | 更新日期: 2023-09-27 18:02:57

所以,当我按下按钮时,我试图为playerprefs添加一个值,但不能完全弄清楚。以下是目前为止的内容:

    using UnityEngine;
    using System.Collections;
    public class Button21 : MonoBehaviour {
    // Use this for initialization
    void Start () {
    }
    // Update is called once per frame
    void Update () {
    }
    public void NextLevel() {
        Application.LoadLevel("Quiz2");
    }

    PlayerPrefs.setFloat("finalScore" + 1f);
}

这是第二个按钮,前面场景中的第一个按钮根据你按下的按钮将"finalScore"设置为1,2,3或4。我想设置"finalScore"为1,2,3或4 + 1.

Unity为PlayerPrefs.SetFloat添加浮动

您定义了一个类"Button21",它是MonoBehaviour的子类。你打算如何实现"ontouch"事件(只是一个方法的可能名称的例子)?你应该在一些通用的UI类中使用OnGui()并绘制按钮,或者你可以只是拖放一些UI组件并将它们"挂钩"到你的类公共方法。为了简化您的工作,下面是一个代码片段:

void OnGui () {
   if (GUI.Button(Rect(10,70,50,30),"Click"))
            Debug.Log("Clicked the button with text");
}

阅读这里的文档http://docs.unity3d.com/ScriptReference/GUI.Button.html

下一件事-你使用UserPrefs错误。您要呼叫:

PlayerPrefs.setFloat("finalScore",1);

然后这将再次设置键"finalScore"值为1。你想把它设置为你的变量"finalScore"左右。

所以最后,代码片段看起来像:

void OnGui () {
       if (GUI.Button(Rect(10,70,50,30),"Save Score"))
                PlayerPrefs.setFloat("finalScore",finalScore);
    }

正如我提到的,你可以通过将它们添加到场景中并通过在检查器中连接它们来调用你自己的公共方法来使用GUI元素。

编辑# 1

为了简化OP,我将给出另一个例子:

public class ScoreCalculator : MonoBehaviour {
    public int[] finalScore = new int[8];
    public void IncreaseMyScore (int increaseAmount, int forLevel) {
      finalScore[forLevel] += increaseAmount;
    }
    public void IncreaseByOne (int forLevel) {
       IncreaseMyScore(1, forLevel);
    }
    public void SaveMyScores () {
       for (int i = 0; i < 8; i++)
          PlayerPrefs.SetFloat("FinalScore"+i,finalScore[i]);
    }
}

从按钮中调用方法" increebyone "

这会像这样保存你所有的分数:FInalScore0, FinalScore1等

注意:有更有效的方法来保存数组,请阅读unity文档和PlayerPrefs文档。我刚刚为你画了一个快速的解决方案。

编辑# 3:升级要点:使用带有字典和关卡名称/分数的列表来存储你的分数。这样,您将不受限于级别索引和扩展级别数量。

保存/加载整个列表/数组使用PlayerPrefsX: http://wiki.unity3d.com/index.php/ArrayPrefs2.

分离逻辑,以便只有一个组件负责分数加载/保存和处理。