跳到主要内容

场景3—数据更新

概述

这个案例实现了一个根据输入内容动态显示提示文本的的效果,完整的项目介绍请见应用教程

场景准备

  1. 创建一个2D场景,场景结构如下:

  2. 设置标签的文本为”我是AI机器人,你好!你叫什么名字?“

  3. 设置单行文本框的占位符为”请输入回答,按下回车键确认“

  4. 设置提示框标题为”提示“,文本为”请输入一个回答“

脚本实现

为根节点UI组件创建脚本。

文本设置

首先获取标签和单行文本框节点,以便在之后对其进行设置。因为获取节点需要在_ready函数之后进行,所以需要在最开始就需要获取节点的操作前在添加onready关键字。脚本中通过变量设置预设的提示文本、回答以及记录当前正在回答的问题的序号。

onready var label = get_node("标签")
onready var line_editor = get_node("单行文本框")

var question2 = ",你好!\n请问你的身份是?\n(学生/老师)"
var welcom = ",\n欢迎使用IdeaXR!"
var answer_name
var current_question = 1

回车键确认

回车确认的功能通过单行文本框的信号实现,将单行文本框的text_entered信号连接到脚本中。

首先进行空文本的判断,如果按下回车发出信号后文本为空,则弹出提示对话框

func _on_单行文本框_text_entered(new_text):
if new_text == "":
get_node("提示对话框").popup_centered()

根据输入更新对话

当输入文本不为空时,根据输入切换下一个问题,并将回答重置

    elif current_question == 1:
answer_name = new_text
label.text = answer_name + question2
current_question += 1

最后,如果回答身份为“学生”时,AI将以同学称呼用户,否则以输入的文本称呼,两种情况都会隐藏输入框,结束问答

    elif line_editor.text == "学生":
label.text = answer_name + "同学" + welcom
line_editor.hide()
else:
label.text = answer_name + line_editor.text +welcom
line_editor.hide()

在进行了任意回答后,清空输入框

    line_editor.text = ""