为什么我无法巩固分数?

时间:2016-01-20 09:05:46

标签: unity3d

我正在使用团结。我需要巩固比赛的得分。我无法保持得分并将其发布到统一的另一个场景中。

如何做到这一点?

    #pragma strict
    private var playerAnswer = "";
    var score : int = 0; 
    var number : int;
    var number2: int;
    var answer : int;



    function Start() 
    {
      number = Random.Range(2,12);
      number2= Random.Range(2,12);

      answer = number*number2;
    }

    function OnGUI() 
    {
      var guiStyleA =GUI.skin.GetStyle("Button");
      guiStyleA.fontSize = 20;
      guiStyleA.fontStyle = FontStyle.Normal;

      var guiStyleB = GUI.skin.GetStyle("Label");
      guiStyleB.fontSize = 25;
      guiStyleB.fontStyle = FontStyle.Normal;


      GUI.skin.textField.fontSize =20;
      GUI.Box(Rect (150,10,50,30),score.ToString());
      GUI.Label(Rect(0,10,200,150), number + " X "+ number2 + " = ");   
      playerAnswer = GUI.TextField ( Rect (150, 70, 30, 30), playerAnswer);

      if ( GUI.Button ( Rect (70, 115, 70, 40) , "Submit" ) )
      { //just a button
        CheckAnswer();
      }
    }

    function CheckAnswer()
    {
      if ( playerAnswer == answer)
      {
        score += 1;
         print("Correct");
      } 
      else 
      {
      }
   }

2 个答案:

答案 0 :(得分:1)

如果要在场景之间存储变量,可以使用Unity PlayerPrefs
这是一个例子:

  PlayerPrefs.SetInt("Player Score", 10);

第一个参数是我们用来获取未来存储变量的键,第二个参数是值。

然后在另一个场景中,如果你想获得玩家得分,你需要做的就是GetInt

print (PlayerPrefs.GetInt("Player Score"))

您还可以使用PlayerPrefs.SetStringPlayerPrefs.SetFloat存储字符串或浮点数。

答案 1 :(得分:0)

@Gary Olsson解决方案没问题,但不仅仅是一个,而且我认为不是最好的方式(访问设备存储)。

除了使用PlayerPrefs之外,你还有以下选项:

  1. 使一个游戏对象在加载场景之间不被破坏并保留其中的值。为此,请分配给该gameObject组件并Awake致电DontDestroyOnLoad

  2. 使用静态变量或属性。他们和申请一样长。