创建简单的控制台

0 点赞
Godot Engine
转载

简单的控制台,供你进行各种调试娱乐 我到底为什么要做控制台呢? 嗯,游戏中的控制台通常用于调试或进行各种实验,比如在《半条命2》中,你输入“impulse 101”,就能获得一些乐趣。 在我们的案例中,我们将创建一个简单的命令处理器,用于在调试器中输出(算是机密吧 :D)文字。 教程本身: 创建任意项目,然后创建一个2D场景(或者用于叠加到游戏玩法中的Control控件)。添加 LineEdit 元素 效果应大致如下:

施展魔法 创建脚本并附加到场景上(也可以附加到LineEdit上,但为了全局访问,建议附加到场景上) 在脚本中编写类似这样的代码块(稍后解释):

然后,点击LineEdit,在检查器旁边点击:Node,创建text_submitted信号。该信号会在按下Enter键时发送(默认情况下,此按键可在项目设置中更改)。附加脚本并创建信号后,即可运行项目。假设输入无效命令:ебатель онлайн,调试控制台将显示:

请使用文明用语,避免不适当表达。

说明 什么是词法单元 词法单元其实就是单词,只是更学术的名称而已 根据代码 extends Node2D # 获取Node2D的功能(此处未使用) func _on_line_edit_text_submitted(new_text: String) -> void: # 接收来自LineEdit的信号 print(new_text) # 输出我们输入的原始文本和命令 var leks = [] # 词法单元数组 var cooked_text = new_text.split(" ") # 将文本分割为词法单元,通过空格确定词法单元 for arg in cooked_text: # 将词法单元添加到数组 print(arg) # 输出词法单元 leks.append(arg) # 添加词法单元 # 进行处理 match leks[0]: # 用于处理的switch-case语句 "выебать": # 用于输出的命令 print("Т.к. годот сосёт в форматировании строк: ") # 将输出与其他杂乱内容分开 print(leks[1]) # 输出一个单词 _: # 如果没有该命令,则输出 print("Ебалай, такой команды нет") leks.clear() # 清空数组 问答与缺点 问答 问:为什么要清空数组 答:这里我们使用向数组添加元素的方式,假设我们两次输入输出命令(第一次想输出:“sleep”,第二次想输出“insomnia”)。第一次会正常输出:“sleep”,而第二次当我们尝试输出“insomnia”时,输出结果仍会是“sleep”,因为我们取的是第2个(索引:1)词,而第二个词就是“sleep”。缺点:此处理器对多词句子的输出处理存在问题,但可通过“for”轻松解决。