Lịch trình mã

*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.

Lập trình code hữu ích trong nhiều tình huống, chẳng hạn như đảm bảo code được thi hành sau khi một hành động hoặc chu kỳ nhất định đã hoàn thành, hoặc độ trễ của code cho một thời gian cụ thể

Các phương pháp thông thường

Các phương pháp task phổ biến nhất được sử dụng để lịch trình mã. Bạn nên sử dụng các phương pháp lịch trình trên các phương pháp lịch trình truyền thống, chẳng hạn như wait() , để đảm bảo rằng mã của bạn chạy một c

Bảng sau đây liệt kê các phương pháp global liên quan và đối tượng tương ứng tối ưu hóa nhất:

| Phương pháp toàn cầu thừa kế | Thu gom phương pháp | Thêm các phương pháp alternat

tạo nhiệm vụ

task.spawn() sử dụng một subprocess hoặc chức năng và kết thúc nó ngay lập tức thông qua người điều khiển của máy chủ. Các引수 bổ sung được truyền cho subprocess hoặc chức năng đang được kết thúc.

Mẫu mã code sau đây là một ví dụ về cách bạn có thể sử dụng task.spawn() khi gọi một chức năng có thể tạo ra trong khi lặp lại một loạt các đối tượng:


local function playerAdded(player)
...
(yield)
end
for _, player in Players:GetPlayers() do
task.spawn(playerAdded, player)
end

任务。延迟

task.defer() một luồng hoặc chức năng và đào thoát cho đến khi chu kỳ tái tạo tiếp theo ở đó nó được khởi động lại với người điều khiển của hộp sọ. Các引수 bổ sung được truyền cho luồng hoặc chức năng đào thoát.

Bạn nên sử dụng cái này khi bạn muốn có một hành vi tương tự như task.spawn() nhưng không quan tâm đến việc chạy ngay lập tức. Mẫu mã code sau đây minh họa cách để print() đố


task.defer(print, "A")
print("B")
--> B
--> A

task.delay

task.delay() một luồng hoặc chức năng và lịch trình nó cho phép khởi động lại sau khi thời gian đã được định cho trên bước Heartbeat tiếp theo. Thời gian khởi động lại được tích hợp sẵ

Vì thời gian trễ thực tế có thể khác nhau, mẫu mã code sau đây cho thấy bạn có thể tính nó bằng cách truyền thời gian hiện tại như một引数:


task.delay(2, function(scheduledTime)
print(os.clock() - scheduledTime) --> 2.038702
end, os.clock())

Một thời gian của zero sẽ khiến cho chuỗi hoặc chức năng tiếp tục trên bước tiếp theo.

chờ nhiệm vụ

task.wait() hiển thị mục đơn hiện tại cho đến thời gian đã định (in seconds) thì kết thúc và sau đó khởi động lại mục đơn trên bước độ tiếp theo của Heartbeat .

Thời gian thực tế để trả lời có thể thay đổi. Mẫu mã code sau đây minh họa cách thức này trả lời nó cho tiện lợi:

Vì thời gian trễ thực tế có thể khác nhau, mẫu mã code sau đây cho thấy bạn có thể nhận được thời gian thực bằng cách lưu giá trị trả về của phương thức:


local elapsedTime = task.wait(2) -- chờ 2 giây
print(elapsedTime) --> 2.0792941

Nếu không được cung cấp thời gian thì thời gian sẽ được đặt lại bằng 0, có nghĩa là thư đã tự động tiếp tục trên bước tiếp theo. Điều này có nghĩa là task.wait() được tương đương với hành vi RunService.Heartbeat .