2017-08-05 74 views
0

我有一個Godot引擎的問題,我正在製作一個RPG,現在我正在製作對話系統,並且爲此我製作了一個場景,它有一個對話框樣式的精靈,並且一個RichTextLabel,和定時器,在腳本我有這個GodotScript回調問題

extends Node2D 
var vc = 0 
var text = false 
onready var t = Timer.new() 
func _ready(): 
    var t = Timer.new() 
    t.set_wait_time(1) 
    t.set_one_shot(true) 
    self.add_child(t) 
    t.start() 
    yield(t, "timeout") 
func _on_Timer_timeout(): 
    get_node("spr_cuadro").show() 
    while get_node("spr_cuadro/rtl_mensaje").get_visible_characters() <= get_node("spr_cuadro/rtl_mensaje").get_text().length(): 
     get_node("Cuadro/Mensaje").set_visible_characters(vc) 
     vc += 1 
     yield(t, "timeout") 
    text = true 
func message(): 
    print("hello") 
    get_node("spr_cuadro/rtl_mensaje").set_bbcode("ef") 
    if Input.is_action_pressed("ui_k"): 
     if text == false: 
      get_node("Timer").start() 
    elif Input.is_action_pressed("ui_k"): 
     if text: 
      get_node("spr_cuadro/rtl_mensaje").set_visible_characters(0) 
      vc = 0 
      get_node("spr_cuadro").hide() 
      yield(t, "timeout") 
      text = false 

而且我呼籲其他場景「enemie」有對話實例化 這裏是代碼:

extends KinematicBody2D 
const diascr = preload("res:///scripts/dialog.gd") 
onready var dialog = get_node("dialog").get_script() 
func _ready(): 
    set_process(true) 
func _process(delta): 
    move(Vector2(1,0)) 
    dialog.message("messaje") 

的事我想要做的就是將對話剪輯與enemie腳本鏈接起來,並調用函數消息在屏幕上顯示消息,如果有人可以幫助我,我將非常感謝

錯誤:無效的調用函數'消息'基'GDScript'中。預期的0個參數。在enemie行8

回答

0

你得到這個錯誤,因爲你忘記了你的消息函數中的參數。目前,你將一個字符串傳遞給函數,但函數「不知道」如何處理它。您的功能必須如下所示:

func message(content): 
    print(content) 
    ... 

此致敬意。

+0

感謝您的幫助,但之後我遇到了更多的問題,我只是想到了Godot Engine並沒有準備好使用另一個場景的另一個對象的功能,我只是拋棄了那個引擎並嘗試用python製作自己的引擎+ pygame – Cerrebe