记录每次研究源码的突破,今天已经将打字练习的功能完成了一个基本模型,先来看下运行效果。
godot源码增加打字练习的demo
这个里面需要研究以下c++的控件页面的开发和熟悉,毕竟好久没有使用c++了,先来看以下代码吧。
//第一排 显示文本 计时器 已完成个数 重新开始按钮
HBoxContainer *version_info_first = memnew(HBoxContainer);
// Add a dummy control node for spacing.
Control *v_spacer_first = memnew(Control);
version_info_first->add_child(v_spacer_first);
hbc->add_child(version_info_first);
VBoxContainer *hbc_first = memnew(VBoxContainer);
hbc_first->set_h_size_flags(Control::SIZE_EXPAND_FILL);
hbc_first->set_alignment(BoxContainer::ALIGNMENT_CENTER);
hbc_first->add_theme_constant_override("separation", 30 * EDSCALE);
vbc->add_child(hbc_first);
typing_label_time = memnew(Label);
typing_label_time->set_text("timer:");
version_info_first->add_child(typing_label_time);
typing_label_count = memnew(Label);
typing_label_count->set_text("complete");
version_info_first->add_child(typing_label_count);
typing_restart_btn = memnew(Button);
typing_restart_btn->set_text("restart");
typing_restart_btn->connect("pressed", callable_mp(this, &EditorApathysTyping::_version_button_pressed));
version_info_first->add_child(typing_restart_btn);
就这样就实现了文本框,输入框和按钮的实现,以及对应的事件,后面还有很多的功能,都需要慢慢的研究。
void EditorApathysTyping::_on_search_term_changed(const String &p_term) {
ERR_PRINT(vformat("Blah: %s", p_term));
String arr[17] = { "def", "div", "format", "enter", "tr", "table", "image", "td", "html", "float", "str", "var", "int", "else", "if", "for", "start" };
int start = 0;
int end = 16;
int index = (rand() % (end - start)) + start;
ERR_PRINT(vformat("Blah: %d", index));
String should = typing_text_input_should->get_text();
if (should == p_term) {
typing_text_input_should->set_text(arr[index]);
typing_text_input->set_text("");
}
if (should.count(should) < p_term.count(p_term)) {
}
下一步开始研究加工车间的面板,虽有难度,但也有挑战。加油吧
我们的目标你也来看一下吧文章来源:https://www.toymoban.com/news/detail-616023.html
元宇宙汽车人变形文章来源地址https://www.toymoban.com/news/detail-616023.html
到了这里,关于godot引擎c++源码深度解析系列二的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!