2017-06-02 40 views
-3

我正在做一個有幾個階段的遊戲,並且這些階段每個都有十個級別,在C#中,你將如何創建一個腳本,當第一階段的第十級完成時,告訴另一個場景中的另一個腳本,第一階段完成並解鎖第二階段。我如何在Unity中使腳本在場景之間彼此分享值?

+0

Id說使用playerprefs來保存它們的值種類 – JRowan

+11

[Unity - 場景之間傳遞數據]的可能重複(https://stackoverflow.com/questions/32306704/unity-pass-data-between-scenes) – Serlite

+1

它的回答這裏https://stackoverflow.com/questions/44320987/unity-c-how-do-i-call-a-listint-from-a-different-scene – rohankad

回答

0

實際上有幾種不同的方式來完成這項工作。我們可以分類成兩種類型

  1. 本地
  2. 基於服務器的系統諸如播放器prefas

本地手段上還是不上負荷破壞,而基於服務器的數據庫,包括在那裏你跟蹤指定用戶並定期更新其數據以允許或解鎖不同的級別。數據庫對您來說會稍微困難一些,因爲您必須編寫服務器端代碼,需要爲最終用戶創建數據庫和互聯網。因此,您可以輕鬆地使用本地選項,如 您也可以在這裏閱讀我的詳細答案Best way to save data in unity

1

您可以將它們保存在一個PlayerPrefs:

https://docs.unity3d.com/ScriptReference/PlayerPrefs.html

或者在文件:

https://unity3d.com/learn/tutorials/topics/scripting/persistence-saving-and-loading-data

或者簡單地存儲您的變量在Monobehaviour腳本的遊戲對象,它是在在GameManager等場景之間持續存在(它必須在Awake()中使用DontDestroyOnLoad()函數)

+0

非常感謝您的幫助,除了我將如何使用playerprefs? – smartbot

+0

每次只需要使用PlayerPrefs就可以保存某些內容。例如:PlayerPrefs.SetFloat(「Player Health」,playerHealthVariable);然後當你改變你的場景時,你可以使用PlayerPrefs.GetFloat(「Player Health」); – Fiffe

+0

非常感謝!很有用! – smartbot