Ở phần 2 này, mình sẽ đi qua phương pháp stream tự động thay vì thủ công như ở phần 1 nhé.

Link phần 1: https://jakesto.com/index.php/2020/05/28/level-streaming-va-cach-thuc-don-gian-de-dung-tung-level-con-cua-map-phan-1/

Cũng như phần 1, ta sẽ thêm level con Sub_Level1 vào trong Persistent Level trong phần Levels.

Lưu ý: Persistent Level phải đang được chọn làm level chính để chỉnh sửa nhé (bằng cách double click vào Persistent Level hoặc chuột phải chọn Make Current)

Sau đó, từ tab Modes bên tay trái, tìm kiếm Level Streaming Volume, kéo thả vào level chính, và thiết lập kích thước sao cho nó che hết toàn bộ Sub_Level1

Ảnh 1. Level Streaming Volume trong Modes
Ảnh 2. Thiết lập Level Streaming Volume cho Sub_Level1

Lưu ý: Logic hoạt động của Level Streaming Volume phụ thuộc vào vị trí của camera. Nên nếu nhân vật của bạn có camera ở xa tâm thì nhớ thiết lập kích thước Volume cho phù hợp nhé!

Bước tiếp theo là ta cần gán Level con với các Streaming Volume tương ứng. Các bạn làm theo các bước như sau:

Ảnh 3. Gán Sub_Level1 cho Level Streaming Volume

Ở dòng Streaming Volumes là một mảng, cho phép ta có thể gán một level con cho nhiều Streaming Volume khác nhau. Trong trường hợp này, ta chỉ có một mà thôi. Hãy nhấn vào dấu + và chọn Level Streaming Volume ta đã đưa vào hồi nãy:

Ảnh 4. Gán Sub_Level1 cho Level Streaming Volume

Như vậy đã xong. Ta có thể tắt đi. Quay lại Viewport, click chọn Level Streaming Volume hồi nãy, ở bên tab Details hãy chú ý tới phần Streaming Usage

Ảnh 5. Các cách thức để stream level
  • SVB Loading : cách mặc định, stream ngầm, không block khi stream, không hiển thị khi stream xong
  • SVB Loading And Visibility : vừa load vừa hiển thị. Cách này sẽ không gây đứng máy, nhưng sẽ bị hiện trạng player hụt chân nếu stream không kịp :v
  • SVB Visibility Block on Load : Block game để stream, và sau đó hiển thị. Cách này là tốt nhất để đảm bảo player không hụt chân.
  • SVB Block on Load : Block game để stream, nhưng không hiển thị
  • SVB Loading not Visible : stream ngầm, và không hiển thị

Trong ví dụ này, ta hãy chọn SVB Visibility Block on Load.

Kết quả ta sẽ được như sau:

Ảnh 6. Kết quả

Với cách stream bằng volume như ta vừa làm, Sub_Level1 sẽ được tự động hiển thị và ẩn đi dựa vào vị trí của camera, đảm bảo bộ nhớ luôn được tối ưu!