LoadSceneMode Single và Additive trong Unity

2 min read

Giới Thiệu

Khi làm việc với Unity, việc quản lý scene là một phần quan trọng trong quá trình phát triển game. Hôm nay, chúng ta cùng tìm hiểu một khía cạnh thú vị của Unity: LoadSceneMode, một công cụ mạnh mẽ giúp kiểm soát cách các scene được tải vào game.

LoadSceneMode là gì?

LoadSceneMode là một enum trong Unity được sử dụng để xác định cách scene mới được tải khi sử dụng các phương thức như SceneManager.LoadScene() hoặc SceneManager.LoadSceneAsync().

Trong Unity cung cấp hai chế độ chính:

  • LoadSceneMode.Single
  • LoadSceneMode.Additive

Mỗi chế độ mang lại những lợi ích và trường hợp sử dụng khác nhau, tùy thuộc vào cách bạn muốn quản lý nội dung trong game.

1. LoadSceneMode.Single

Chế độ này được dùng khi bạn muốn tải một scene duy nhấtgỡ bỏ toàn bộ các scene hiện tại.

Cách hoạt động:

  • Scene mới sẽ thay thế hoàn toàn nội dung của scene đang hoạt động.

Khi nào nên dùng:

  • Khi chuyển đổi giữa các màn chơi khác nhau (level-based games).
  • Khi không cần giữ lại dữ liệu hoặc nội dung từ scene trước.

Ví Dụ:

SceneManager.LoadScene("Game", LoadSceneMode.Single);

2. LoadSceneMode.Additive

Chế độ này được dùng khi bạn muốn giữ lại các scene hiện tại thêm scene mới vào.

Cách hoạt động:

  • Scene mới được tải và tồn tại song song với các scene hiện có.

Khi nào nên dùng:

  • Game có cấu trúc phức tạp, chia nhỏ nội dung thành nhiều scene
  • Tải thêm nội dung động mà không làm mất đi những gì đang hiển thị.

Ví Dụ:

Khi bạn đang ở màn Home và trong script được sử dụng trong màn Home gọi câu lệnh như bên dưới. Scene Subcription sẽ được thêm vào và tồn tại cùng scene Home.

SceneManager.LoadScene("Subscription", LoadSceneMode.Additive);

Những lưu ý quan trọng khi sử dụng LoadSceneMode.Additive

1. Quản lý Lighting và Camera:

Khi có nhiều scene hoạt động cùng lúc, hãy đảm bảo chỉ có một nguồn sáng chính và một camera hoạt động để tránh xung đột xảy ra lỗi

2. Gỡ bỏ Scene không cần thiết:

Khi không cần sử dụng scene nữa, người dùng có thể dỡ bỏ nó để tiết kiệm bộ nhớ bằng cách sử dụng:

SceneManager.UnloadScene("SceneName");

Ứng dụng thực tế của Additive Mode

Một số ứng dụng thực tế khi sử dụng LoadSceneMode.Additive:

  • Game sandbox hoặc open-world: Mỗi khu vực là một scene riêng, được tải và dỡ bỏ khi người chơi di chuyển giữa các khu vực.
  • UI module riêng biệt: Giữ UI trong một scene độc lập để dễ dàng quản lý và cập nhật.

Kết Luận

LoadSceneMode mang lại sự linh hoạt tuyệt vời khi làm việc với scene trong Unity. Với hai chế độ SingleAdditive, người dùng có thể kiểm soát cách nội dung được tải và hiển thị trong game một cách hiệu quả.

Tài Liệu Tham Khảo

https://docs.unity3d.com/6000.0/Documentation/ScriptReference/SceneManagement.LoadSceneMode.html

https://gamedev.stackexchange.com/questions/142482/what-is-the-different-between-loadscenemode-additive-and-loadscenemode-single

Avatar photo

Leave a Reply

Your email address will not be published. Required fields are marked *