Skip to content

Khắc phục sự cố ​

Node không có trong hộp thoại Create New Node ​

Plugin chưa được bật. Project → Project Settings → Plugins → NPC TalkKit. Nếu đã bật mà vẫn không thấy node thì thư mục đang sai chỗ: đường dẫn phải đúng là res://addons/npc_talkkit/plugin.cfg.

Sau khi di chuyển file của addon, hãy đóng rồi mở lại project. Godot cache tên class toàn cục và không phải lúc nào cũng nhận ra thay đổi.

play() trả về false và không có gì xảy ra ​

Nó trả false — không bao giờ ném lỗi — vì ba lý do, và mỗi lý do đều ghi một cảnh báo nói rõ là lý do nào:

Cảnh báoNguyên nhân
conversation '…' was not foundtên không khớp conversation_id nào trên node lẫn trong kho
refused invalid conversationkhông qua được kiểm tra; cảnh báo có kèm báo cáo
is already running a conversationđang có hội thoại được đọc dở — đây là cố ý, để lần bấm tương tác thứ hai không khởi động lại nó

Nếu bạn đang trả lời một blocking event thì play() được phép — trường hợp đó không bị từ chối. Nếu vẫn trả false ở đó, hãy đọc cảnh báo kiểm tra: một nhánh không qua được kiểm tra sẽ bị từ chối, và hội thoại gốc vẫn tiếp tục chạy.

Bong bóng thoại không di chuyển ​

Renderer phải có get_box_control(). Anchoring và transition đều tác động lên control mà nó trả về, nên renderer tự viết mà thiếu nó sẽ trông vẫn đúng mà chẳng làm gì.

Nếu bạn đang dùng hộp có sẵn, kiểm tra xem có vị trí nào được gán với when_offscreen đặt thành HIDE trong khi mục tiêu đang ngoài màn hình không.

Bong bóng 3D sai chỗ, hoặc nhảy ngang màn hình ​

Triệu chứngNguyên nhân
Nó nằm dưới chân nhân vậtfollow_offset_3d đang bằng 0. Đó là độ cao đầu tính bằng mét trong không gian thế giới — thử Vector3(0, 1.9, 0).
Nó trôi khỏi đầu khi lại gầnBạn dùng follow_offset (toạ độ màn hình) thay vì follow_offset_3d (toạ độ thế giới).
Nó lật sang phía đối diện màn hìnhMục tiêu đang sau lưng camera và when_offscreen để FREE.
Không hiện gì cảKhông có Camera3D nào đang hoạt động, hoặc mục tiêu đã vượt max_distance.

Theme của tôi bị bỏ qua ​

Gán theme vào theme của template, đừng gán vào scene renderer. Khi theme được đặt, style sẽ ngừng ghi đè font, cỡ chữ và màu để theme của bạn thắng. Phần bố cục vẫn áp dụng, vì Theme không bao gồm những thứ đó.

Nếu bạn đã gán theme cho một node bên trong renderer tự viết mà vẫn bị bỏ qua, hãy tìm theme_override_* trên node đó — override luôn thắng theme.

Chữ hiện ra một lúc hết ​

typewriter_speed trên node đang là 0, hoặc characters_per_second được đặt trên câu thoại. Cả hai đều tính bằng "ký tự mỗi giây"; số 0 nghĩa là hiện cả câu.

Người chơi vẫn bị khoá sau khi hội thoại kết thúc ​

request_player_lock(false) được phát khi hội thoại kết thúc hoặc bị dừng. Nếu handler của bạn được nối sau khi play() đã gọi thì nó bỏ lỡ tín hiệu true đầu tiên và trạng thái lệch nhịp — hãy nối trong _ready().

Một id hội thoại bị báo là trùng ​

Id có phạm vi theo node, nên hai NPC đều có thể sở hữu một greeting — đó là cảnh báo, không phải lỗi. Lỗi chỉ được báo khi kho khai một id hai lần, hoặc khi một node khai cùng một id hai lần, lúc đó cái thứ hai không bao giờ chạy được.

Vẫn tắc ​

Thu thập những thứ này trước khi hỏi:

gdscript
print(ProjectSettings.get_setting("application/config/features"))
print(TalkKitConstants.ADDON_VERSION)
print($NPCTalkKit.list_conversations())
print($NPCTalkKit.state)

Kèm phiên bản Godot và toàn văn cảnh báo trong panel Output.

Ưu tiên GDScript. Addon phát hành không có telemetry, không gọi mạng, không phụ thuộc dịch vụ AI.