2016-11-20 13 views
0
using UnityEngine; 
using System.Collections; 

public class Scoremanager : MonoBehaviour { 
    public static Scoremanager instance; 
    public int Score; 
    void Awake(){ 
     if (instance == null) { 
      instance = this; 
     } 

    } 
    // Use this for initialization 
    void Start() { 
     Score = 0; 
     PlayerPrefs.SetInt ("Score", 0); 
    } 

    // Update is called once per frame 
    void Update() { 

    } 
    public void IncrementScore(){ 
     Score++; 

    } 
    public void StopScore(){ 
     PlayerPrefs.SetInt ("HighScore", Score); 
     if(PlayerPrefs.HasKey("HighScore")){ 

      if (Score > PlayerPrefs.GetInt ("HighScore")) { 
       PlayerPrefs.SetInt ("HighScore", Score); 

      } 
     } 
     else{ 
      PlayerPrefs.SetInt ("HighScore", Score); 
    } 
} 

ゲームはユニティエディタのゲームビューでうまく実行され、スコアのテキストが更新されますが、 、スコアのテキストは更新されません。私は間違っている人に行っていますか?ユニティエディタ内でUnityスコアのテキストが更新されますが、実際のデバイスで更新されません

+1

「IncrementScore」とは何ですか?投稿したコードはコンパイルされていないように見えますが、中括弧は消えています。 –

+0

Incrementスコアは別のスクリプトから呼び出されます。 – hunk

+0

あなたはまだ閉じ括弧がないので、あなたは重要な質問に答えていません。これらの関数はどのように呼び出されていますか? –

答えて

0
public class ScoreManager : MonoBehaviour { 

    public static int Score{ 
     get{ 
      return PlayerPrefs.GetInt ("Score", 0); 
     }set{ 
      PlayerPrefs.SetInt ("Score", value); 
      if (HighScore < value) { 
       PlayerPrefs.SetInt ("HighScore", value); 
      } 
     } 
    } 

    public static int HighScore{ 
     get{ 
      return PlayerPrefs.GetInt ("HighScore", 0); 
     } 
    } 

    void Start(){ 
     Score = 0; 
    } 
} 

public class AnotherScript : MonoBehaviour { 

    void IncreaseScore(){ 
     ScoreManager.Score++; 

     Debug.Log (ScoreManager.Score); 
     Debug.Log (ScoreManager.HighScore); 
    } 
} 

これを行う方法があり、ゲームのスコアを簡単に管理できます。

関連する問題