Chờ, lặp và debug: bộ khối bạn dùng mỗi ngày
PC & MobileCập nhật 22/10/2026
Chờ đợi
async func WaitForMillisecond(duration int)
async func WaitForNextFrame()
- Chờ đợi đến mili giây tiếp theo — dừng kịch bản
durationmili giây. Dùng cho đếm ngược, giãn cách giữa các đợt quái, hiệu ứng có thời gian. - Chờ đợi đến khung hình tiếp theo — dừng đúng một khung hình. Hữu ích khi cần để trò chơi xử lý xong việc vừa làm (VD: vừa tạo thực thể) trước khi bước tiếp.
Ví dụ minh hoạ một đếm ngược 3 giây trước khi cho người chơi di chuyển:
// Minh hoạ theo chữ ký
SetAllPlayersMoveStatus(false)
for i = 3 down to 1
LogInfo(i)
WaitForMillisecond(1000)
SetAllPlayersMoveStatus(true)
Điều khiển vòng lặp
break (Phá vỡ vòng lặp) thoát hẳn vòng lặp; continue (Bấm tiếp tục để chuyển) bỏ qua phần còn lại của lượt hiện tại và sang lượt kế. Ví dụ: duyệt GetAllPlayers(), gặp người đã bị loại thì continue; tìm thấy người thắng thì break.
Vòng lặp chạy mãi mà không cóWaitForMillisecondhoặcWaitForNextFramebên trong là nguyên nhân phổ biến khiến map đứng hình.
Ba mức log để debug
func LogInfo(content object)
func LogWarning(content object)
func LogError(content object)
- In thông báo (
LogInfo) — theo dõi luồng chạy: "đã vào giai đoạn 2", "đội A còn 3 người". - In cảnh báo (
LogWarning) — điều bất thường nhưng chưa hỏng: danh sách rỗng, không tìm thấy điểm hồi sinh. - In lỗi (
LogError) — việc chắc chắn sai:statusCodebáo thất bại, thực thể cần thiết bị trống.
Thói quen tốt: sau mỗi hàm có out var statusCode hoặc out var isSuccess, kiểm tra kết quả và LogError nếu thất bại. Kết hợp khối Kiểm tra trống (if(value==nil)) trước khi dùng một thực thể có thể đã bị phá huỷ.
Checklist trước khi xuất bản map
- Đã thử với đủ số người chơi tối đa, và với 1 người.
- Đã thử thoát giữa trận và kết nối lại (
OnPlayerQuit,OnReconnect). - Không còn API có nhãn Hết hạn trong kịch bản.
- Đã gỡ bớt
LogInfodư thừa trongOnUpdate.