2016-01-28 112 views
0

我想製作一個系統,在完成一個後解鎖下一個等級。 我使用C#代碼在Unity3D中解鎖等級

如果完成1級,你解開level2的等等

MainMenu的是建立0級和電平選擇是建造1級,所以第一級實際上是建立級別2.

public bool isLevel1; 
public bool isLevel2; 
public bool isLevel3; 
public bool isLevel4; 


// Use this for initialization 
void Start() { 

} 

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

} 
void OnMouseUp() 
{ 
    if (isLevel1) 
    { 
     Application.LoadLevel(2); 
    } 
    if (isLevel2) 
    { 
     Application.LoadLevel(3); 
    } 
    if (isLevel3) 
    { 
     Application.LoadLevel(4); 
    } 
    if (isLevel4) 
    { 
     Application.LoadLevel(5); 
    } 
} 

這就是我如何從關卡選擇級別選擇。我在mainmenu上有類似的東西,但我不知道如何鎖定它們,然後在完成關卡後解鎖。我有辦法鎖定它們,但我放棄了它,因爲它沒有工作。如果有人能夠很簡單地解釋它,或者指向我錯過的指南,那將是一個很大的幫助。因爲我找到了一些指南,但他們認爲我的水平選擇不同。 我在此先感謝你,我願意回答任何其他問題

+0

雖然這是一個很好的問題,但對於質量保證網站來說,這個問題太廣泛了。請去gamedev或forum.unity3d,或類似的。 – Fattie

回答

2

我建議PlayerPrefs可能是做這種事情的最佳選擇,它可以很好地保存玩家的分數,因此可以節省解鎖的關卡也工作。

下面是PlayerPrefs一些文檔: http://docs.unity3d.com/ScriptReference/PlayerPrefs.html

這裏是展示你想達到:) https://www.youtube.com/watch?v=uw0kZ72zCvE&feature=youtu.be

+1

對於一個保存數據很少或沒有保存的小遊戲,PlayerPrefs會很好,IMO。對於每個關卡,您都可以在PlayerPrefs中包含一個布爾值,指示是否解鎖。 但是,值得注意的是PlayerPrefs並不是真的用於保存遊戲狀態數據。它更適合音頻音量,控制映射等偏好。因此,如果您的遊戲具有保存/加載文件,或者多個遊戲可以保存到同一臺計算機上,您最終應該將遊戲數據保存在單獨的文件中。 – Remption

+1

遊戲狀態數據和音量有什麼區別? PlayerPrefs適合預期的目的。沒有必要考慮每個級別的布爾值,只是一個整數來定義什麼頂級的:int level = PlayerPrefs.GetInteger(「Level」,0);如果需要更多信息,使用JSON字符串更合適。你可以看看這個https://unitygem.wordpress.com/leaderboard-and-saving-data/ – Everts

+0

我跟着視頻,但每一行都是錯誤的,因爲我正在使用c#並且他與JS一起工作。在我使用c#之前我沒有提到它,但是我在帖子中改變了它。對不起,浪費你的時間 –

0

也許包括一些空的遊戲對象的腳本什麼類似於一個很好的視頻鏈接(確保你可以調用Object.DontDestroyOnLoad(transform.gameObject),以便在關卡變化時對象保持關閉狀態),並且每次完成一個關卡時,都要在該對象中更改一個布爾變量,以表示該關卡至少已經完成一次。然後,如果boolean表示上一級已完成,則解鎖UI中的下一級是true

如果您的角色在完成前一個角色後自動進入下一個級別,您可以改爲使用OnLevelWasLoaded(int level)level在這種情況下是剛剛加載的級別數(因此對於你來說3將是你的真正的第一級)。然後在此函數中更改空遊戲對象的boolean變量,而不是在上一級的末尾。這可能是最有用的,如果當你完成關卡時,你可以前進到不同的關卡(不僅有一個選項可以解鎖)。