2016-08-06 50 views
0

我想以某種方式創建一個統計的場景,顯示有關用戶與遊戲統一自動保存和加載只是一個簡單的變量

+0

看看[這個答案](http://stackoverflow.com/a/10230015/2736798)或閱讀[serialization](https://msdn.microsoft.com/en-ca/library/ mt656716.aspx)。 –

回答

1

做這裏面OnApplicationFocusOnApplicationPause功能多少互動的一些信息會好些,但有很多情況下這些功能都沒有被調用,這也取決於平臺。在OnEnableOnDisable函數中應該這樣做,因爲這些函數被保證被調用。

雖然,您需要將DontDestroyOnLoad(transform.gameObject);放在喚醒功能中,以確保在遊戲過程中加載新場景時不會調用OnEnableOnDisable

問題與您的代碼:

。你要保存test鍵與PlayerPrefs.SetInt("test", timesPlayed);一個int但隨後加載test鍵與PlayerPrefs.GetFloat("test")的浮動。

。即使加載它,您也不會將加載的值賦值給任何東西。 timesPlayed = PlayerPrefs.GetInt("timesPlayed");應該這樣做。

。最後,你並沒有把它保存下來。不僅如此,你甚至不會在任何地方撥打Save()Load()的功能。您需要know Unity加載和卸載時調用哪些函數。

下面是一個簡單的根據您的腳本打開計數器的次數。創建一個GameObject和下面的腳本。您現在可以擴展此功能以包含其他功能。

public class OpenCounter : MonoBehaviour 
{ 
    int timesPlayed; 
    public Text timeSpendOnGame; 

    void Awake() 
    { 
     DontDestroyOnLoad(transform.gameObject); 
     timeSpendOnGame.GetComponent<Text>(); 
    } 

    void Start() 
    { 
     timeSpendOnGame.text = "" + timesPlayed; 
    } 


    public void Save() 
    { 
     PlayerPrefs.SetInt("timesPlayed", timesPlayed); 
    } 

    //Load 
    public void Load() 
    { 
     timesPlayed = PlayerPrefs.GetInt("timesPlayed"); 
    } 

    //Load when Opening 
    public void OnEnable() 
    { 
     Debug.Log("Opening!"); 
     Load(); 
    } 

    //Increment and Save on Exit 
    public void OnDisable() 
    { 
     Debug.Log("Existing!"); 
     timesPlayed++; //Increment how many times opened 
     Save(); //save 
    } 
} 
+0

喲!我來晚了,我實際上有其他方式工作,但我有一個問題與UI文本它正在消失在巡視員時,即時播放模式,我只是試過你的代碼它的作品就像一個魅力!謝謝! – John

+0

很高興我能夠幫助。我拒絕了編輯,因爲「counter」沒有描述任何內容。 'counter'可以是任何東西。 'timesPlayed'描述你在你的問題中所要求的。 – Programmer

+0

這將工作在android設備上嗎? onEnable和onDisable? – John