2017-08-05 81 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