Chạy trình truyền thể hiện

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Trong trò chơi, chạy trình truyền thể hiện cho phép engine Roblox dynamically load và unload nội dung 3D và các thể hiện liên quan trong Workspace. Điều này có thể cải thiện trải nghiệm của người chơi tổng thể theo nhiều cách, bao gồm:

  • Thời Gian Tham Gia Nhanh Hơn
    — Người chơi có thể bắt đầu chơi ở một phần của thế giới trong khi phần còn lại của thế giới được tải ở chế độ nền.
  • Tiết Kiệm Bộ Nhớ
    — Các trò chơi có thể chơi trên các thiết bị có bộ nhớ ít hơn vì nội dung được truyền tải vào và ra một cách động. Những thế giới chi tiết và sống động có thể chơi trên một loạt các thiết bị rộng hơn.
  • Hiệu Suất Cải Thiện
    — Tăng tốc độ khung hình và hiệu suất, khi server có thể tiết kiệm thời gian và băng thông để đồng bộ hóa các thay đổi giữa thế giới và người chơi ở đó. Các khách hàng mất ít thời gian để cập nhật các thể hiện không còn liên quan đến người chơi hiện tại.
  • Mức Độ Chi Tiết
    — Khi được cấu hình, các mô hình xa, nhân vật nền tảng và địa hình vẫn hiển thị ngay cả khi chúng không được truyền tới khách hàng, giữ cho trò chơi được tối ưu hóa mà không hy sinh hoàn toàn hình ảnh nền.

Chạy trình truyền thể hiện được kiểm soát thông qua thuộc tính Workspace.StreamingEnabled, được bật theo mặc định cho các địa điểm mới được tạo trong Studio. Thuộc tính này không thể được thiết lập qua một script.

Cửa sổ Thuộc tính với thuộc tính StreamingEnabled được bật.

Hành vi kỹ thuật

Phạm vi

Logic và tính năng truyền tải chỉ áp dụng cho các thể hiện là con cháu của Workspace, trong khi các thể hiện được lưu trữ trong các container khác như ReplicatedStorageReplicatedFirst không đủ điều kiện để truyền tải. Ví dụ, việc đặt một mô hình nguyên tử dưới ReplicatedStorage không đảm bảo sao chép nguyên tử.

Stream in

Khi một người chơi tham gia vào một trò chơi với trình truyền thể hiện được bật:

  1. Các thể hiện trong Workspace được sao chép đến khách hàng không bao gồm các thể hiện sau:

    Models được đặt thành Không Nguyên Tử (mặc định) khi Workspace.ModelStreamingBehavior được đặt thành Improved

    Các con cháu của các thể hiện ở trên

  2. Trong quá trình chơi, server có thể truyền tải các thể hiện trong các thể loại trì hoãn trên đến khách hàng dựa trên thuộc tính truyền tải của trò chơi, vị trí người chơi, hiệu suất thiết bị của khách hàng và các điều kiện khác.

Stream out

Trong quá trình chơi, một khách hàng có thể loại bỏ các vùng của BaseParts từ Workspace của người chơi dựa trên hành vi được thiết lập bởi Workspace.StreamOutBehavior. Quá trình bắt đầu với các khu vực xa nhất từ trọng tâm sao chép và di chuyển vào gần hơn, khi cần. Các khu vực trong phạm vi Workspace.StreamingMinRadius không bao giờ bị truyền tải ra.

Lưu ý rằng một Model không có con cháu BasePart, chẳng hạn như một cái chỉ được sử dụng như một "container" cho các thể hiện không phải BasePart như scripts, thì sẽ miễn trừ khỏi việc truyền tải ra trừ khi nó trở thành con cháu của một BasePart.

Tập hợp

Chạy bản vật lý vào như các đơn vị hoàn chỉnh, bao gồm cả các ConstraintsAttachments liên kết với nó, giúp đảm bảo các bản cập nhật vật lý nhất quán trên các khách hàng. Ngoại lệ duy nhất là khi tập hợp được neo, trong trường hợp đó chỉ các BaseParts trong phạm vi truyền tải được truyền vào cùng với các ConstraintsAttachments liên kết.

Tập hợp không truyền tải ra cho đến khi tất cả các BaseParts của chúng đủ điều kiện để truyền tải ra.

Các thuộc tính truyền tải

Các thuộc tính sau kiểm soát cách thức truyền tải thể hiện áp dụng cho trò chơi của bạn. Tất cả các thuộc tính này là không thể lập trình và phải được thiết lập trên đối tượng Workspace trong Studio.

Thuộc tínhMô tả
EnableSLIMAvatarsKiểm soát liệu một mô hình SLIM có được tạo ra cho nhân vật avatar trong trò chơi hay không. Khi được bật, các avatar được render sử dụng SLIM theo cách giống như thiết lập Model.LevelOfDetail thành SLIM cho các mô hình khác.
ModelStreamingBehaviorKiểm soát cách các mô hình Không Nguyên Tử (mặc định) được truyền vào và ra.

KHÔN NGOAN
Sử dụng Improved để kích hoạt việc truyền tải hiệu quả nhất cho các Models với các con cháu là BasePart.
StreamingIntegrityModeTrò chơi có thể hoạt động theo những cách không mong đợi nếu một người chơi di chuyển vào một vùng của thế giới chưa được truyền tải đến họ. Thuộc tính này cung cấp một cách để tránh những tình huống có thể gây vấn đề.

KHÔN NGOAN
Sử dụng PauseOutsideLoadedArea để cân bằng tính chính xác của trò chơi mà không cần dừng lại không cần thiết hoặc quá thường xuyên. Bạn cũng có thể tùy chỉnh màn hình dừng.
StreamingMinRadiusThuộc tính này chỉ ra bán kính quanh trọng tâm sao chép trong đó các thể hiện được truyền vào với ưu tiên cao nhất. Cần thận trọng khi tăng mức mặc định, vì điều này sẽ yêu cầu nhiều bộ nhớ và băng thông server hơn với mức chi phí cho các thành phần khác.

KHÔN NGOAN
Sử dụng mức mặc định là 64 để tối đa hóa khả năng engine làm giảm kích thước trò chơi cho các thiết bị thấp cấp.
StreamingTargetRadiusThuộc tính này kiểm soát khoảng cách tối đa từ trọng tâm sao chép mà các thể hiện truyền vào. Lưu ý rằng engine được phép duy trì các thể hiện đã được tải trước đó vượt quá bán kính mục tiêu, nếu bộ nhớ cho phép.

Bán kính StreamingTargetRadius nhỏ hơn sẽ giảm tải công việc của server, vì server sẽ không truyền vào các thể hiện bổ sung vượt quá giá trị đã đặt. Tuy nhiên, bán kính mục tiêu cũng là khoảng cách tối đa mà người chơi sẽ có thể thấy toàn bộ chi tiết của trò chơi của bạn, vì vậy bạn nên chọn một giá trị tạo ra sự cân bằng tốt giữa những điều này.

KHÔN NGOAN
Sử dụng mặc định là 1024 để tạo sự cân bằng tốt giữa khả năng nhìn thấy cho người chơi trên các thiết bị cao cấp và một dấu ấn bộ nhớ hợp lý.
StreamOutBehaviorThuộc tính này thiết lập hành vi transmitting out theo giá trị của Enum.StreamOutBehavior. Nếu được đặt thành LowMemory (mặc định), khách hàng chỉ truyền ra các khu vực vượt quá bán kính tối thiểu trong trường hợp bộ nhớ thấp. Nếu được đặt thành Opportunistic, các khu vực vượt quá StreamingTargetRadius có thể bị loại bỏ trên khách hàng ngay cả khi không có áp lực bộ nhớ (trong chế độ này, khách hàng không bao giờ loại bỏ các thể hiện mà nằm trong bán kính mục tiêu, ngoại trừ trong các tình huống bộ nhớ thấp).

KHÔN NGOAN
Sử dụng Opportunistic để cho phép khách hàng thực hiện dọn dẹp rác một cách chủ động, giúp giảm thiểu việc sử dụng bộ nhớ và giúp ngăn ngừa lỗi do hết bộ nhớ.

Trọng tâm sao chép

Theo mặc định, quá trình truyền tải xảy ra xung quanh PrimaryPart của nhân vật người chơi địa phương, mặc dù bạn có thể chỉ định một điểm trọng tâm sao chép khác thông qua Player.ReplicationFocus.

Bạn cũng có thể thêm và loại bỏ các trọng tâm sao chép bổ sung thông qua Player:AddReplicationFocus()Player:RemoveReplicationFocus() để kích hoạt việc truyền tải động trong nhiều khu vực của trò chơi.

Mô phỏng vật lý phía khách hàng, bao gồm dự đoán và tái mô phỏng khi quyền server được thực hiện, chỉ xảy ra trong các khu vực đã được truyền tải, ngay cả đối với các thể hiện được tạo ra ở local và cho các thể hiện Persistent. Nếu bạn có các thể hiện mà bạn muốn tiếp tục mô phỏng ngay cả khi chúng ở xa nhân vật, hãy tạo một điểm trọng tâm sao chép gần các thể hiện đó.

Điều khiển truyền tải theo mô hình

Để tránh các vấn đề với việc truyền tải theo từng mô hình và giảm thiểu việc sử dụng WaitForChild(), bạn có thể tùy chỉnh cách mà Models và các con cháu của chúng được truyền tải thông qua thuộc tính ModelStreamingMode.

Không Nguyên Tử

Theo mặc định, các mô hình là Nonatomic và chúng truyền vào/ra dựa trên việc Workspace.ModelStreamingBehavior được đặt thành Legacy (mặc định) hay Improved.

Cổ Điển

Khi Workspace.ModelStreamingBehavior được đặt thành Legacy (mặc định), container Model và các con cháu không phải BasePart như Scripts sao chép đến khách hàng khi người chơi tham gia. Sau đó, khi đủ điều kiện, các con cháu BasePart của mô hình sẽ được truyền vào.

Cải Thiện

Khi Workspace.ModelStreamingBehavior được đặt thành Improved, hành vi truyền tải mô hình thay đổi tùy thuộc vào việc mô hình có chứa các con cháu BasePart hay không:

  • Một mô hình có các con cháu BasePart chỉ được truyền vào khi một trong số các con cháu BasePart của nó đủ điều kiện để truyền vào. Tại thời điểm đó, mô hình và các BasePart đủ điều kiện sẽ được truyền vào, cùng với các con cháu không phải BasePart của mô hình.

    Khi BasePart cuối cùng còn lại của mô hình truyền ra, mô hình sẽ truyền ra cùng với nó.

  • Một mô hình không có con cháu BasePart, chẳng hạn như một cái chỉ được sử dụng như một "container" cho các thể hiện không phải BasePart như scripts, sẽ sao chép đến khách hàng ngay sau khi người chơi tham gia. Loại mô hình này được miễn trừ khỏi việc truyền tải ra trừ khi nó trở thành con cháu của một BasePart.

Nguyên Tử

Nếu một Model được đặt thành Atomic, tất cả các con cháu ban đầu của nó sẽ được truyền vào cùng nhau khi một con cháu BasePart đủ điều kiện để được truyền vào. Do đó, một script phía khách hàng cần truy cập các thể hiện bên trong mô hình sẽ cần sử dụng WaitForChild() trên chính mô hình, nhưng không trên một con cháu MeshPart hoặc Part vì chúng được gửi cùng với mô hình.

Một mô hình nguyên tử chỉ được truyền ra khi tất cả các bộ phận con cháu của nó đủ điều kiện để truyền ra, lúc đó toàn bộ mô hình được truyền ra cùng nhau.

Một sơ đồ cho thấy việc truyền tải mô hình nguyên tử cùng với con cháu.

Bền Bỉ

Các mô hình Persistent không phải là đối tượng của việc truyền tải vào hoặc ra bình thường. Chúng được gửi như một đơn vị nguyên tử hoàn chỉnh ngay sau khi người chơi tham gia và trước khi sự kiện Workspace.PersistentLoaded xảy ra. Các mô hình bền bỉ và các con cháu của chúng sẽ không bao giờ bị truyền ra, nhưng để xử lý an toàn việc truyền tải vào trong một script phía khách hàng, bạn nên chờ sự kiện PersistentLoaded xảy ra.

Một sơ đồ cho thấy việc truyền tải mô hình bền bỉ cùng với con cháu.

Bền BỉTheoNgườiChơi

Các mô hình được đặt thành PersistentPerPlayer hoạt động giống như Persistent cho những người chơi đã được thêm vào bằng Model:AddPersistentPlayer(). Đối với những người chơi khác, hành vi giống như Atomic. Bạn có thể khôi phục một mô hình từ sự bền bỉ của người chơi thông qua Model:RemovePersistentPlayer().

Tùy chỉnh màn hình dừng

Giả sử Workspace.StreamingIntegrityMode được đặt thành PauseOutsideLoadedArea được khuyến nghị, trò chơi sẽ dừng lại nếu một người chơi di chuyển vào một vùng của thế giới chưa được truyền tải đến họ. Trong những trường hợp này, thuộc tính Player.GameplayPaused cho biết trạng thái dừng hiện tại của người chơi, có thể được sử dụng với kết nối GetPropertyChangedSignal() để hiển thị hoặc ẩn GUI tùy chỉnh.

LocalScript

local Players = game:GetService("Players")
local GuiService = game:GetService("GuiService")
local player = Players.LocalPlayer
-- Vô hiệu hóa modal dừng mặc định
GuiService:SetGameplayPausedNotificationEnabled(false)
local function onPauseStateChanged()
if player.GameplayPaused then
-- Hiện GUI tùy chỉnh
else
-- Ẩn GUI tùy chỉnh
end
end
player:GetPropertyChangedSignal("GameplayPaused"):Connect(onPauseStateChanged)

Gỡ lỗi thời gian chạy

Engine bao gồm nhiều bảng gỡ lỗi trên màn hình có thể được kích hoạt trên khách hàng bằng cách sử dụng các phím tắt. Để truy cập thông tin gỡ lỗi truyền tải:

  1. Mở lớp gỡ lỗi Tóm tắt Mạng thông qua ShiftCtrlF3 (Windows) hoặc ShiftF3 (Mac).

  2. Khi lớp gỡ lỗi được mở, nhấn Shift1 liên tục để chuyển qua các bảng có sẵn. Bảng thứ tư là chế độ gỡ lỗi Truyền Tải hiển thị thông tin runtime hữu ích:

    • Các cài đặt truyền tải đang hoạt động
    • Các khu vực hiện đang được tải (đã truyền vào)
    • Hành vi và trạng thái truyền tải

Khi được bật, các vùng được đánh dấu bằng màu sẽ xuất hiện trong viewport 3D:

MàuMô tả
Ít hơn StreamingMinRadius
Lớn hơn hoặc bằng StreamingMinRadius và nhỏ hơn StreamingTargetRadius
Bằng với StreamingTargetRadius
Lớn hơn StreamingTargetRadius
©2026 Roblox Corporation. Roblox, logo Roblox và Powering Imagination là các nhãn hiệu đã đăng ký và chưa đăng ký của chúng tôi tại Hoa Kỳ và các quốc gia khác.