Loại và vị trí của kịch bả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.

Đối với nhiều nhà phát triển, thách thức cốt lõi của việc thích ứng với lập trình Roblox là tầm quan trọng của vị trí file và thuộc tính Script.RunContext.Tùy thuộc vào đánh máykịch bản, vị trí trong Trình khám phá và bối cảnh chạy, các kịch bản có thể hành xử rất khác nhau.Một số cuộc gọi phương thức có thể thất bại, các đối tượng trong trải nghiệm của bạn có thể không truy cập được hoặc các kịch bản có thể không chạy duy tất cả.

Lý do cho sự phức tạp này là trải nghiệm Roblox mặc định là nhiều người chơi.Các kịch bản cần khả năng chỉ chạy trên máy chủ, chỉ chạy trên máy khách, hoặc được chia sẻ trên cả hai.Sự phát triển của nền tảng Roblox theo thời gian đã làm phức tạp thêm tình hình.

Loại kịch bản

Roblox có ba loại kịch bản:

  • Script - Mã được chạy trên máy chủ hoặc máy khách, tùy thuộc vào vị trí và Script.RunContext tính chất của nó.
  • LocalScript - Mã chỉ chạy trên khách hàng. Không có bối cảnh chạy.
  • ModuleScript - Mã mà bạn có thể sử dụng lại trong các kịch bản khác. Không có bối cảnh chạy.

Khi bạn tạo một Script , bối cảnh chạy mặc định của nó là Legacy , có nghĩa là nó a) là một kịch bản bên máy chủ và b) chỉ chạy nếu nó ở trong một thùng chứa máy chủ, chẳng hạn như Workspace hoặc ServerScriptService .

  • Nếu bạn thay đổi bối cảnh thực thi của kịch bản thành Server, nó bây giờ cũng có thể chạy trong ReplicatedStorage, nhưng điều đó không được khuyến khích.Nội dung của vị trí đó được sao chép cho khách hàng, vì vậy nó là một vị trí tồi cho các kịch bản bên máy chủ.
  • Nếu bạn thay đổi bối cảnh chạy của kịch bản thành Client, nó có thể chạy trong ReplicatedStorage .Nó cũng có thể chạy trong StarterCharacterScriptsStarterPlayerScripts .Tuy nhiên, các thùng chứa khởi động được sao chép cho khách hàng, vì vậy kịch bản ban đầu bản sao chạy, điều này không mong muốn.

Để thay đổi một bối cảnh thực thi kịch bản, hãy chọn nó trong Explorer và thay đổi giá trị trong cửa sổ Tính năng.

RunContext property indicated for a Script.

Khuyến nghị

  • Sử dụng ServerClient giá trị cho RunContext loại bỏ sự không chắc chắn về cách các tập lệnh chạy và có thể giúp giữ cho dự án của bạn được tổ chức.Các trường hợp sử dụng tốt nhất cho các giá trị không mặc định RunContext là:

    • Tập lệnh khách hàng mà bạn muốn chạy từ ReplicatedStorage hoặc ReplicatedFirst .
    • Các kịch bản máy chủ hoặc khách hàng bạn bao gồm trong mô hìnhgói hàng .Cài đặt cụ thể bối cảnh chạy làm cho các mô hình và gói có khả năng hoạt động đúng cách từ nhiều vị trí khác nhau.
  • Để chia sẻ mã giữa máy chủ và kịch bản khách, sử dụng ModuleScripts trong ReplicatedStorage .

  • Sử dụng LocalScripts trong StarterCharacterScripts , StarterPlayerScripts , StarterGui , và StarterPack .

Vị trí của kịch bản

Vị trí | Mô tả :--- | :--- Không gian làm việc | Biểu hiện thế giới trò chơi.Vị trí này hoạt động tốt cho các kịch bản máy chủ gắn trực tiếp vào các đối tượng và kiểm soát hành vi của chúng.ReplicatedFirst | Bao gồm các đối tượng sao chép cho khách hàng trước khi bất cứ điều gì khác.Vị trí này thích hợp cho bộ tối thiểu tuyệt đối của các đối tượng và kịch bản khách hàng cần thiết để hiển thị màn hình tải.ReplicatedStorage | Chứa các đối tượng được sao lưu cho cả khách hàng và máy chủ.Vị trí này là lý tưởng cho Class.ModuleScript\|ModuleScripts bạn muốn sử dụng trên cả máy chủ và khách hàng.Class.LocalScript\|LocalScripts không chạy từ vị trí này, nhưng Class.Script\|Scripts với một bối cảnh chạy của Client làm.ServerScriptService | Bao gồm các kịch bản máy chủ.Vị trí này thích hợp cho các kịch bản cần truy cập chức năng hoặc đối tượng bên máy chủ, chẳng hạn như logic trò chơi và kho lưu trữ đám mây.ServerStorage | Bao gồm các đối tượng bên máy chủ.Vị trí này thích hợp cho các đối tượng lớn không cần phải được sao chép ngay lập tức cho khách hàng khi họ tham gia vào một trải nghiệm.Các tập lệnh không chạy từ vị trí này, nhưng bạn có thể lưu bên máy chủ Class.ModuleScript\|ModuleScripts ở đây.StarterPlayer.StarterCharacterScripts | Bao gồm Class.LocalScript\|LocalScripts chạy khi nhân vật xuất hiện.StarterPlayer.StarterPlayerScripts | Bao gồm các kịch bản chung dụng Class.LocalScript\|LocalScripts chạy khi người chơi tham gia vào trải nghiệm.StarterGui | Bao gồm các thành phần GUI mà khách hàng hiển thị khi nó tải game.Class.LocalScript\|LocalScripts có thể chạy từ vị trí này.Vị trí này thích hợp cho các kịch bản sửa đổi giao diện người dùng của trò chơi, chẳng hạn như thêm nút, menu và pop-up.Gói khởi động | Chủ yếu chỉ chứa Class.Tool\|Tools , nhưng cũng có thể bao gồm Class.LocalScript\|LocalScripts để thiết lập ba lô người chơi.

Hình ảnh này cho thấy các vị trí cửa sổ Explorer nào có thể chứa các kịch bản khách hàng.Hãy nhớ, ReplicatedFirstReplicatedStorage có thể chứa Scripts với một RunContext của Client , trong khi các thùng chứa Starter[] nên sử dụng LocalScripts .

Diagram showing which script locations run on clients.

Cấu trúc dự án ví dụ

Dự án tham khảo Cây cho thấy cách bạn có thể tổ chức mã của mình trong một trải nghiệm lớn và phức tạp.

Đáng chú ý là cách nó lưu phần lớn của mã như có thể tái sử dụng ModuleScripts trong ReplicatedStorageServerStorage .