Đó là
UnityEngine.SceneManagement.SceneManager.LoadScene("Gameplay");
và vâng nó có phải nó "ngay lập tức" - đó là để nói s ynchronously.
Nói cách khác, nó "dừng" ở dòng mã đó, đợi cho đến khi nó tải toàn bộ cảnh (ngay cả khi mất một vài giây) và cảnh mới bắt đầu.
Không sử dụng lệnh cũ mà bạn đề cập trong câu hỏi.
Lưu ý rằng Unity cũng có khả năng làm a tải đồng bộ .. nó "tải chậm cảnh mới trong nền".
Tuy nhiên: Tôi khuyến khích bạn chỉ nên sử dụng "LoadScene" thông thường. Tất cả những vấn đề đó là độ tin cậy và sự đơn giản. Người dùng chỉ cần đừng bận tâm nếu máy chỉ "dừng" trong vài giây trong khi mức tải.
(Mỗi lần tôi nhấp vào "Netflix" trên truyền hình của tôi, phải mất một thời gian cho TV để làm điều đó ai quan tâm -. Nó là bình thường.)
Nhưng nếu bạn muốn tải ở chế độ nền , đây là cách ...
public void LaunchGameRunWith(string levelCode, int stars, int diamonds)
{
.. analytics
StartCoroutine(_game(levelCode, superBombs, hearts));
}
private IEnumerator _game(string levelFileName, int stars, int diamonds)
{
// first, add some fake delay so it looks impressive on
// ordinary modern machines made after 1960
yield return new WaitForSeconds(1.5f);
AsyncOperation ao;
ao = UnityEngine.SceneManagement.SceneManager.LoadSceneAsync("Gameplay");
// here's exactly how you wait for it to load:
while (!ao.isDone)
{
Debug.Log("loading " +ao.progress.ToString("n2"));
yield return null;
}
// here's a confusing issue. in the new scene you have to have
// some sort of script that controls things, perhaps "NewLap"
NewLap newLap = Object.FindObjectOfType<NewLap>();
Gameplay gameplay = Object.FindObjectOfType<Gameplay>();
// this is precisely how you conceptually pass info from
// say your "main menu scene" to "actual gameplay"...
newLap.StarLevel = stars;
newLap.DiamondTime = diamonds;
newLap.ActuallyBeginRunWithLevel(levelFileName);
}
Lưu ý: tập lệnh đó trả lời câu hỏi về cách bạn truyền thông tin "từ trình đơn chính" khi người chơi nhấn "vào cảnh chơi trò chơi thực tế".
Cảm ơn bạn đã phản hồi nhanh! – Umibozu
['LoadScene'] (http://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.LoadScene.html) thực sự là ** đồng bộ **, [không] (http://stackoverflow.com/questions/748175/asynchronous-vs-synchronous-execution-what-does-it-really-mean) ** không đồng bộ **. Để tải cảnh không đồng bộ, hãy sử dụng ['LoadSceneAsync'] (http://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.LoadSceneAsync.html) – AquaGeneral
hi @AquaGeneral, đúng, twas chỉ là lỗi đánh máy. – Fattie