簡體   English   中英

加載下一個Unity C#

[英]Loading next level Unity c#

這是我達到“目標”時加載下一個關卡的第一次嘗試

public int CurrentLevel = 0;
public static int maxlevel = 3;

public void CompleteLevel()
{
    if (CurrentLevel < maxlevel)
    {
        CurrentLevel += 1;
        SceneManager.LoadScene(CurrentLevel);
    }
    else
        print("you win");
}

這是另一堂課...

void OnTriggerEnter(Collider other)
{
    if (other.transform.tag == "DeathObject")
        Die();
    if (other.transform.tag == "Goal")
    Manager.CompleteLevel();
}

它最終加載了第一級,進入第二級,然后當我達到目標時將重復第二張地圖。 它要做的另一件事是從第一或第二級跳到最后一級。 這是我嘗試過的第二件事:

public void LevelPassTest()
{
    if (Application.loadedLevel > 4)
        Application.LoadLevel(Application.loadedLevel + 1);
        else
    print("win");
}

這是另一堂課。

void OnTriggerEnter(Collider other)
{
    if (other.transform.tag == "DeathObject")
        Die();
    if (other.transform.tag == "Goal")
    Manager.LevelPassTest();
}

我不確定為什么,但是有時它不加載下一個級別,它工作了一會兒然后停了下來,在我重新設置了單位之后,它又可以工作了,所以我不確定是我的代碼還是單位...我收到警告消息:“警告CS0618'Application.loadedLevel'已過時:'使用SceneManager確定已加載哪些場景''和'警告CS0618'Application.LoadLevel(int)'已過時:'Use SceneManager.LoadScene' “我是編碼的新手,對此完全迷失了。 花了四個小時試圖修復它。 這些警告是什么? 他們會影響負載嗎? 我還希望能夠保存該關卡的值,以便可以在游戲保存中使用它,並為其附加高分。 我在第一次嘗試中嘗試使用此方法,但是它並沒有達到我的期望。 (現在的水平)

從Unity 5開始, Application.LoadLevel和其余部分已過時。您必須改為使用SceneManager

所以Application.LoadLevel()現在是SceneManager.LoadScene()

您還必須包括using UnityEngine.SceneManagement;

參見此處: http : //docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.LoadScene.html

它所需要的只是一個快速的Google。

  1. 您的場景是否正確添加到“構建設置”中? 轉到“文件”>“構建設置...”,然后檢查“構建中的場景”是否以所需方式添加了從場景0到場景3的所有場景。

  2. 您給出的第一個示例應該可以工作, 但是必須確保在加載下一個場景時不會破壞您的第一個腳本(包含CurrentLevel )。 為此,請在其void Start()調用GameObject.DontDestroyOnLoad(gameObject) void Start() 或者,您可以使CurrentLevel成為靜態成員。 這是必需的,因此在加載下一個場景時不會丟失CurrentLevel的值。 這可以解釋為什么您一遍又一遍地加載相同的級別。

  3. 在第二個示例中,在LevelPassTest()中,檢查Application.loadedLevel > 4是否必須為Application.loadedLevel < 4 如果解決此問題,第二個示例也應該可以正常工作。

是的,您正在部分處理過時的API,但這不能解釋為什么它不起作用。

使用UnityEngine.SceneManagement;

然后在統一5.xx中使用SceneManager.LoadScene()就像我們以前使用Application.LoadLevel()的方式一樣。Application.LoadLevel已過時-意味着它將在將來被刪除並且不應該使用,並且不是保證它將正常工作。

我建議您閱讀有關Scene和SceneManager類的Unity文檔,以便熟悉Unity 5引入的更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM