项目管理器结构: 主要类ProjectManager

1,CanvasItem : public Node  任何2d的基类。
     void _draw ( ) virtual
    调用(如果存在)以绘制画布项。

Control : public CanvasItem  所有用户界面节点都继承自控件。控件的定位点和页边距相对于其父控件调整其位置和大小。
    所有与UI相关的节点的基类。 Control 其特征是定义范围的边界矩形、相对于其父控件或当前视区的定位点位置以及表示定位点偏移的边距。当节点、其父节点或屏幕大小发生变化时,页边距自动更新。
    相关属性:
    枚举 FocusMode :焦点相关
FOCUS_NONE = 0 ---节点无法获取焦点。与一起使用 focus_mode .
FOCUS_CLICK = 1 ---节点只能通过鼠标点击来获取焦点。与一起使用 focus_mode .
FOCUS_ALL = 2 ---该节点可以通过鼠标单击或使用键盘上的箭头和制表键来获取焦点。与一起使用 focus_mode .

枚举 CursorShape : 光标显示位置与形状
CURSOR_ARROW = 0 ---当用户悬停节点时,显示系统的箭头鼠标光标。与一起使用 mouse_default_cursor_shape .
CURSOR_IBEAM = 1 ---用户悬停节点时,显示系统的工字梁鼠标光标。工字钢指针的形状类似于“I”。它告诉用户可以突出显示或插入文本。
CURSOR_POINTING_HAND = 2 ---用户悬停节点时,显示系统的鼠标指针。
CURSOR_CROSS = 3 ---用户悬停节点时,显示系统的鼠标光标。
CURSOR_WAIT = 4 ---当用户悬停在节点上时,显示系统的等待鼠标光标,通常是沙漏。
CURSOR_BUSY = 5 ---用户悬停节点时,显示系统繁忙的鼠标光标。通常是沙漏。
CURSOR_DRAG = 6 ---当用户悬停在节点上时,显示系统的拖动鼠标光标,通常是闭合的拳头或十字符号。它告诉用户他们当前正在拖动一个项目,如场景停靠中的节点。
CURSOR_CAN_DROP = 7 ---当用户悬停节点时,显示系统的鼠标光标。它可以是一只张开的手。它告诉用户,他们可以放下当前正在抓取的项目,就像场景停靠中的节点一样。
CURSOR_FORBIDDEN = 8 ---用户悬停节点时,显示系统禁止使用的鼠标光标。通常是一个交叉的圆。
CURSOR_VSIZE = 9 ---当用户悬停节点时,显示系统的垂直调整鼠标光标。双头垂直箭头。它告诉用户可以垂直调整窗口或面板的大小。
CURSOR_HSIZE = 10 ---当用户悬停节点时,显示系统的水平调整鼠标光标。双头水平箭头。它告诉用户可以水平调整窗口或面板的大小。
CURSOR_BDIAGSIZE = 11 ---当用户悬停节点时,显示系统的窗口调整鼠标光标大小。光标是一个从左下到右上的双头箭头。它告诉用户可以水平和垂直调整窗口或面板的大小。
CURSOR_FDIAGSIZE = 12 ---当用户悬停节点时,显示系统的窗口调整鼠标光标大小。光标是一个从左上到右下的双头箭头,与 CURSOR_BDIAGSIZE . 它告诉用户可以水平和垂直调整窗口或面板的大小。
CURSOR_MOVE = 13 ---当用户悬停节点时,显示系统的移动鼠标光标。它显示两个90度角的双头箭头。它告诉用户他们可以自由移动UI元素。
CURSOR_VSPLIT = 14 ---用户悬停节点时,显示系统的垂直拆分鼠标光标。在窗户上,它和 CURSOR_VSIZE .
CURSOR_HSPLIT = 15 ---用户悬停节点时,显示系统的水平拆分鼠标光标。在窗户上,它和 CURSOR_HSIZE .
CURSOR_HELP = 16 ---当用户悬停节点时,显示系统的帮助鼠标光标,一个问号。

枚举 LayoutPreset :
PRESET_TOP_LEFT = 0 ---将所有4个锚都捕捉到父控件边界的左上角。与一起使用 set_anchors_preset .
PRESET_TOP_RIGHT = 1 ---将所有4个锚都捕捉到父控件边界的右上角。与一起使用 set_anchors_preset .
PRESET_BOTTOM_LEFT = 2 ---将所有4个锚都捕捉到父控件边界的左下角。与一起使用 set_anchors_preset .
PRESET_BOTTOM_RIGHT = 3 ---将所有4个锚都捕捉到父控件边界的右下角。与一起使用 set_anchors_preset .
PRESET_CENTER_LEFT = 4 ---将所有4个锚点捕捉到父控件边界左边缘的中心。与一起使用 set_anchors_preset .
PRESET_CENTER_TOP = 5 ---将所有4个锚点捕捉到父控件边界上边缘的中心。与一起使用 set_anchors_preset .
PRESET_CENTER_RIGHT = 6 ---将所有4个锚点捕捉到父控件边界右边缘的中心。与一起使用 set_anchors_preset .
PRESET_CENTER_BOTTOM = 7 ---将所有4个锚点都捕捉到父控件边界下边缘的中心。与一起使用 set_anchors_preset .
PRESET_CENTER = 8 ---将所有4个锚点捕捉到父控件边界的中心。与一起使用 set_anchors_preset .
PRESET_LEFT_WIDE = 9 ---将所有4个锚点捕捉到父控件的左边缘。左边距变为相对于左边缘,上边距变为相对于节点父级的左上角。与一起使用 set_anchors_preset .
PRESET_TOP_WIDE = 10 ---将所有4个锚点捕捉到父控件的上边缘。左边距相对于左上角、上边缘相对于上边缘、右边缘相对于节点父节点的右上角。与一起使用 set_anchors_preset .
PRESET_RIGHT_WIDE = 11 ---将所有4个锚点都对齐到父控件的右边缘。右边距变为相对于右边缘,上边距变为相对于节点父节点右上角。与一起使用 set_anchors_preset .
PRESET_BOTTOM_WIDE = 12 ---将所有4个锚点捕捉到父控件的下边缘。左边距变为相对于左下角,下边缘变为相对于下边缘,右边缘变为相对于节点父节点右下角。与一起使用 set_anchors_preset .
PRESET_VCENTER_WIDE = 13 ---将所有4个锚点都捕捉到一条垂直线,该垂直线将父控件切成两半。与一起使用 set_anchors_preset .
PRESET_HCENTER_WIDE = 14 ---将所有4个锚点对齐到一条水平线,该水平线将父控件切成两半。与一起使用 set_anchors_preset .
PRESET_WIDE = 15 ---将所有4个锚点对齐到父控件的各个角。应用此预设和 Control 将适合其父控件。这相当于编辑器中的“完整矩形”布局选项。与一起使用 set_anchors_preset .

枚举 LayoutPresetMode :

PRESET_MODE_MINSIZE = 0
PRESET_MODE_KEEP_WIDTH = 1
PRESET_MODE_KEEP_HEIGHT = 2
PRESET_MODE_KEEP_SIZE = 3

枚举 SizeFlags :

SIZE_FILL = 1 ---告诉家长 Container 展开此节点的边界以填充所有可用空间,而不推送任何其他节点。与一起使用 size_flags_horizontal 和 size_flags_vertical .
SIZE_EXPAND = 2 ---告诉家长 Container 以使此节点占用您标记的轴上的所有可用空间。如果将多个相邻节点设置为展开,则它们将根据拉伸比共享空间。见 size_flags_stretch_ratio . 与一起使用 size_flags_horizontal 和 size_flags_vertical .
SIZE_EXPAND_FILL = 3 ---将节点的大小标志设置为“填充”和“展开”。有关更多信息,请参阅上面的2个常量。
SIZE_SHRINK_CENTER = 4 ---告诉家长 Container 使节点本身居中。它基于控件的边界框将控件居中,因此不使用填充或展开大小标志。与一起使用 size_flags_horizontal 和 size_flags_vertical .
SIZE_SHRINK_END = 8 ---告诉家长 Container 要使节点与其端部对齐,请在底部或右侧边缘对齐。它不适用于填充或展开大小标志。与一起使用 size_flags_horizontal 和 size_flags_vertical .

枚举 MouseFilter :

MOUSE_FILTER_STOP = 0 ---控件将通过以下方式接收鼠标按钮输入事件: _gui_input 如果单击。控制中心将收到 mouse_entered 和 mouse_exited 信号。这些事件将自动标记为已处理,并且不会进一步传播到其他控件。这也会导致其他控件中的信号阻塞。
MOUSE_FILTER_PASS = 1 ---控件将通过以下方式接收鼠标按钮输入事件: _gui_input 如果单击。控制中心将收到 mouse_entered 和 mouse_exited 信号。如果此控件不处理该事件,则将考虑父控件(如果有),依此类推,直到没有更多的父控件可以潜在地处理它。这也允许信号在其他控件中触发。即使没有任何控件处理它,事件仍将自动处理,因此不会激发未处理的输入。
MOUSE_FILTER_IGNORE = 2 ---控件不会通过以下方式接收鼠标按钮输入事件: _gui_input . 控件也不会接收 mouse_entered 也不 mouse_exited 信号。这不会阻止其他控件接收这些事件或触发信号。忽略的事件不会自动处理。

枚举 GrowDirection :
GROW_DIRECTION_BEGIN = 0 ---如果控件的最小大小更改为大于其在各自轴上的当前大小,则控件将向左或向上增长以弥补。
GROW_DIRECTION_END = 1 ---如果控件的最小大小更改为大于其在各自轴上的当前大小,则控件将向右或向下扩展以进行弥补。
GROW_DIRECTION_BOTH = 2 ---如果控件的最小大小更改为大于当前大小,则控件将在两个方向上平均增长以弥补。

枚举 锚 :
ANCHOR_BEGIN = 0 ---将4个锚的一侧之一捕捉到节点的原点 Rect ,在左上角。把它和一个 anchor_* 成员变量,如 anchor_left . 要同时更改所有4个锚,请使用 set_anchors_preset .
ANCHOR_END = 1 ---将4个锚的一侧之一捕捉到节点的末端 Rect 在右下角。把它和一个 anchor_* 成员变量,如 anchor_left . 要同时更改所有4个锚,请使用 set_anchors_preset .

常量
NOTIFICATION_RESIZED = 40 ---节点更改大小时发送。使用 rect_size 以获得新尺寸。
NOTIFICATION_MOUSE_ENTER = 41 ---鼠标指针进入节点时发送。
NOTIFICATION_MOUSE_EXIT = 42 ---鼠标指针退出节点时发送。
NOTIFICATION_FOCUS_ENTER = 43 ---节点获取焦点时发送。
NOTIFICATION_FOCUS_EXIT = 44 ---节点失去焦点时发送。
NOTIFICATION_THEME_CHANGED = 45 ---当节点的 theme 更改,就在Godot重新绘制控件之前。当你调用 add_*_override 方法。
NOTIFICATION_MODAL_CLOSE = 46 ---打开模式对话框关闭时发送。见 show_modal .
NOTIFICATION_SCROLL_BEGIN = 47 ---此节点位于 ScrollContainer 它已经开始滚动。
NOTIFICATION_SCROLL_END = 48 ---此节点位于 ScrollContainer 它已停止滚动。

Panel : public Control
面板是一个 Control 显示不透明背景。它通常用作其他类型的 Control 节点。StyleBox

2,   ProjectManager : public Control
    成员控件:
      TabContainer *tabs;
      ProjectList *_project_list;
      LineEdit *search_box;
      Label *loading_label;
     OptionButton *filter_option;
     Button *run_btn;
     Button *open_btn;
     Button *rename_btn;
     Button *erase_btn;
     Button *erase_missing_btn;
     Button *about_btn;
     EditorAssetLibrary *asset_library;

FileDialog *scan_dir;   扫描对话框
    ConfirmationDialog *language_restart_ask;

ConfirmationDialog *erase_ask;
   Label *erase_ask_label;
   CheckBox *delete_project_contents;

ConfirmationDialog *erase_missing_ask;
   ConfirmationDialog *multi_open_ask;
   ConfirmationDialog *multi_run_ask;
   ConfirmationDialog *multi_scan_ask;
   ConfirmationDialog *ask_update_settings;
   ConfirmationDialog *open_templates;
   EditorAbout *about;

HBoxContainer *settings_hb;  水平

AcceptDialog *run_error_diag;
  AcceptDialog *dialog_error;
  ProjectDialog *npdialog;   新建项目对话框,导入

OptionButton *language_btn;
   LinkButton *version_btn;
2,改变需求
    button各态颜色改变
    Ref<StyleBoxFlat> sb_minimap = about_btn->get_theme_stylebox(SNAME("normal"))->duplicate(true);
    //Ref<StyleBoxFlat> sb_minimap = memnew(StyleBoxFlat);
   sb_minimap->set_bg_color(Color(255, 0, 0, 1));
   about_btn->add_theme_style_override("normal", sb_minimap);
3,
    Camera2D 属性中的 current 要选上摄像机才会启用。
    queue_free()是在帧末尾安全销毁节点并将其从树中删除的快捷方式

4,进入编辑器进程相关函数

String path = EditorSettings::get_singleton()->get("projects/" + selected);
String conf = path.plus_file("project.godot");

if (!FileAccess::exists(conf)) {
            dialog_error->set_text(vformat(TTR("Can't open project at '%s'."), path));
            dialog_error->popup_centered_minsize();
            return;
        }

print_line("Editing project: " + path + " (" + selected + ")");

List<String> args;

args.push_back("--path");
        args.push_back(path);

args.push_back("--editor");

if (OS::get_singleton()->is_stdout_debug_enabled()) {
            args.push_back("--debug");
        }

if (OS::get_singleton()->is_stdout_verbose()) {
            args.push_back("--verbose");
        }

if (OS::get_singleton()->is_disable_crash_handler()) {
            args.push_back("--disable-crash-handler");
        }

String exec = OS::get_singleton()->get_executable_path();

OS::ProcessID pid = 0;
        Error err = OS::get_singleton()->execute(exec, args, false, &pid);

OS_Windows::execute(const String &p_path, const List<String> &p_arguments, bool p_blocking, ProcessID *r_child_id, String *r_pipe, int *r_exitcode, bool read_stderr, Mutex *p_pipe_mutex)

godot引擎学习6相关推荐

  1. godot引擎学习5

    中文文档 https://docs.godotengine.org/zh_CN/latest/about/introduction.html 基础类 register_core_types 先调用,主 ...

  2. godot引擎学习4

    基本数据结构 1, SafeNumeric 安全数值类 原子操作 2,  SafeRefCount 引用计数类,组合SafeNumeric类 3,mutable变量的值 ,某个常成员函数的调用次数时 ...

  3. godot引擎学习10

    调试进入进程, 进入方式  --path  E:/G4WorkProject/SimpleDebug  --remote-debug  tcp://127.0.0.1:6007  --allow_fo ...

  4. godot引擎学习7

    编辑器进程, 进入方式 D:\godot2\bin\godot.windows.tools.32.exe --path E:\G3WorkCode\Simple --editor E:\godot\b ...

  5. godot引擎学习9

    游戏进入参数 D:\godot2\bin\godot.windows.tools.64.exe --path E:\G3WorkCode\SimpleDebug --remote-debug  tcp ...

  6. Godot3游戏引擎入门之零一:【翻译】为什么要选择 Godot 引擎

    前言 本文作为我的 Godot 系列文章的第二篇,是一篇翻译文作为 Godot 的优点说明吧,虽然文章发布于去年,但还是很有借鉴意义,翻译的不是很好请海涵! :smile: 作者简介:Rock Mil ...

  7. Godot引擎 4.0 文档 - 第一个 2D 游戏

    本文为Google Translate英译中结果,DrGraph在此基础上加了一些校正.英文原版页面: Your first 2D game - Godot Engine (stable) docum ...

  8. ue4 迁移模型_UE4虚幻引擎学习云笔记(六)-关卡设计入门-[5.地形快速入门]

    [六.关卡设计入门(Level Designer Quick Start)] 19-09-29 UE4虚幻引擎学习云笔记(六)-关卡设计入门​zhuanlan.zhihu.com UE4虚幻引擎学习云 ...

  9. velocity(vm)模板引擎学习介绍及语法

    velocity模板引擎学习 velocity与freemaker.jstl并称为java web开发三大标签技术,而且velocity在codeplex上还有.net的移植版本NVelocity,( ...

最新文章

  1. SqlServer2008查询性能优化_第一章
  2. 记一次Java多线程程序调试经历:HttpClient 死锁
  3. 动态绑定 dgvlist 列
  4. 《android基于andFix的热修复方案》实战篇
  5. mongodb3.2系统性学习——5、游标 模糊查询 findAndModify函数
  6. 从零入门 Serverless | 一文详解 Serverless 架构模式
  7. python读取调用摄像头并将读取视频写入视频文件
  8. SAP应用有可能改造成Serverless架构么?
  9. Statefulset:部署有状态的多副本应用
  10. #333. 【NOIP2017】宝藏
  11. Oracle日期函数汇总
  12. 华为静态路由配置案例
  13. 计算机桌面推流,OBS推流PPT电脑桌面投屏
  14. Horizon Daas 模板转化映像ip地址检索获取失败
  15. 解决:java.sql.SQLException: Access denied for user ‘‘@‘localhost‘ (using password: YES)
  16. webgl中解决深度冲突-多边形偏移
  17. 关于Java垃圾回收问题的总结
  18. .Header Manipulation漏洞
  19. 海南大学施超杰计算机与科学,HAAI新闻丨20支精英队伍!2019高校计算机大赛人工智能创意赛(海南赛区)进入决赛阶段,29日总决赛!...
  20. 在计算机时代初期,程序员是如何编程的?

热门文章

  1. 无法将类中的构造器应用到给定类型
  2. 干货!深度推荐系统的探索与实践
  3. pycharm 2017.3破解方法
  4. 用相关函数法计算信号的延迟量
  5. 微软文件共享服务器进程,Windows Server“8”– 将服务器应用程序存储转移到 Windows 文件共享...
  6. USB (十三)2022-04-02
  7. 高效的敏捷测试第四课 测试的团队协作
  8. Win10右下角提示“已禁用IME”的多种解决方法汇总
  9. Javascript随机生成数字字母字符串
  10. imprinted weights