乐于分享
好东西不私藏

Godot 编辑器插件开发 1

Godot 编辑器插件开发 1
Godot 编辑器拥有极强的可扩展能力,官方提供的 EditorPlugin 核心类,允许开发者自定义扩展编辑器功能,无需修改引擎源码,即可实现编辑器功能的个性化拓展。

通过编辑器插件,我们可以为原生编辑器新增各类自定义能力,常见实用场景如下:

  • 新增编辑器快捷按钮、自定义快捷键

  • 搭建专属自定义停靠面板、功能界面

  • 定制节点属性检查器展示样式

  • 实现自定义资源导入器、专属节点类型

  • 开发自动化工具(自动生成碰撞体、批量处理资源等)

  • 搭建对话编辑器、关卡管理器等专属功能模块

几乎所有编辑器个性化需求,都可以通过现有插件或自定义插件实现。但插件运行在编辑器内核中,若未掌握 @tool 注解、插件生命周期核心规则,极易引发编辑器卡顿、崩溃、内存泄漏等问题。

本文将从零起步,从基础核心语法到实战案例,循序渐进讲解插件开发,带你掌握自定义停靠面板、工具栏按钮、专属属性检查器三大核心插件功能。

基础:@tool 注解

@tool 是 Godot 编辑器扩展开发的必备注解。在脚本头部添加该注解后,当前脚本将不再仅运行于游戏运行时,而是可以在编辑器环境中直接执行

所有编辑器插件主脚本、编辑器预览脚本、自定义编辑器UI脚本,都必须添加 @tool 注解,否则无法在编辑器中生效。

编辑器与运行时逻辑分离

添加 @tool 后,脚本逻辑会同时作用于编辑器和游戏运行场景。我们必须通过Engine.is_editor_hint() 做逻辑分支判断,严格区分编辑器编辑逻辑游戏运行逻辑,避免游戏逻辑在编辑器中异常执行。

@toolextends Node2D# 帧更新逻辑func _process(delta):    # 仅在编辑器环境执行预览、绘制等编辑逻辑    if Engine.is_editor_hint():        queue_redraw()    # 仅在游戏运行时执行游戏核心逻辑    else:        move_character(delta)

未做逻辑分支判断,会导致游戏运行代码在编辑器中执行,引发数据异常、编辑器报错甚至崩溃。

@tool 核心应用场景

@tool 广泛应用于各类编辑器自定义场景:

应用场景

详细说明

自定义编辑器绘制

通过 _draw() 函数在编辑器中绘制辅助线、攻击范围、碰撞预览等可视化图形

属性实时预览

监听 @export 导出属性变更,实时刷新编辑器内的预览效果

编辑器插件开发

所有继承 EditorPlugin 的插件主脚本,必须添加该注解(强制要求)

实战:属性联动实时绘制

在属性检查器中修改半径数值时,编辑器内实时刷新圆形范围预览,仅编辑器生效,不影响游戏运行逻辑。

@toolextends Sprite2D# 导出可编辑半径属性,绑定属性修改回调@export var radius: float = 100.0:    set(value):        radius = value        queue_redraw()  # 属性变更后触发重绘# 编辑器绘制逻辑func _draw():    # 仅编辑器环境执行绘制    if Engine.is_editor_hint():        # 绘制半透明绿色圆形范围预览        draw_circle(Vector2.ZERO, radius, Color(0, 1, 0, 0.3))

插件基础结构与配置

掌握 @tool 基础后,我们正式开始搭建标准 Godot 编辑器插件框架。Godot 插件拥有固定的目录和配置规范,编辑器可自动识别、加载和启用插件。

插件标准目录结构

所有自定义插件必须放置在项目根目录的 addons 文件夹中(无该文件夹可手动创建),单插件独立文件夹隔离,结构清晰、便于维护。

addons/└── my_plugin/                # 自定义插件根目录(插件名)    ├── plugin.cfg            # 插件核心配置文件(必须存在)    ├── my_plugin.gd          # 插件主脚本(生命周期入口)    └── dock/                 # 自定义停靠面板资源目录(可选)        └── my_dock.tscn      # 停靠面板场景文件

目录命名为 addons 而非 plugins,是因为 Godot 将所有引擎附加扩展工具统一归类为附加组件,而 编辑器插件 特指继承自 EditorPlugin 的标准化扩展脚本。

插件配置文件 plugin.cfg

plugin.cfg 是插件的唯一识别配置文件,用于定义插件名称、作者、版本、入口脚本等核心信息,编辑器依靠该文件识别插件。

[plugin]name="我的自定义编辑器插件"description="实现自定义停靠面板、工具栏按钮、属性检查器扩展"author="开发者名称"version="1.0.0"script="my_plugin.gd"  # 绑定插件主脚本(相对路径)

插件主脚本基础生命周期

插件主脚本必须继承 EditorPlugin 类,并实现两大核心生命周期函数,这是插件运行的核心规则:

  • _enter_tree():插件启用/编辑器加载时触发,用于初始化UI、注册功能

  • _exit_tree():插件禁用/编辑器关闭时触发,用于销毁UI、释放资源(核心避坑点)

@toolextends EditorPlugin# 插件启用加载时执行func _enter_tree():    print("我的插件:加载成功!")# 插件禁用卸载时执行func _exit_tree():    print("我的插件:卸载成功!")

插件启用步骤

  1. 将完整插件目录放入项目 addons 文件夹,刷新项目文件;

  2. 点击顶部菜单栏 项目 → 项目设置 → 插件,进入插件管理面板;

  3. 在插件列表中找到自己的插件,勾选前方复选框,即可启用插件;

  4. 启用后编辑器实时加载插件功能,禁用后立即卸载。

实战:自定义编辑器停靠面板

自定义停靠面板是最常用的编辑器扩展方式,可实现常驻编辑器的自定义功能界面,常用于调试面板、资源预览、批量工具、参数配置等场景。

实现停靠面板挂载

通过 add_control_to_dock() 函数可将自定义场景挂载到编辑器指定停靠区域,插件卸载时必须手动移除并释放资源。

@toolextends EditorPluginvar dock: Control  # 定义停靠面板根节点变量# 插件加载:初始化并挂载停靠面板func _enter_tree():    # 预加载并实例化自定义面板场景    dock = preload("res://addons/my_plugin/dock/my_dock.tscn").instantiate()    # 挂载到编辑器左上停靠区域    add_control_to_dock(DOCK_SLOT_LEFT_UL, dock)# 插件卸载:销毁面板、释放资源func _exit_tree():    # 空值校验,避免报错    if dock:        remove_control_from_docks(dock)        dock.queue_free()

停靠面板位置常量

Godot 编辑器预设4个停靠区域,可根据需求自由选择挂载位置:

位置常量

对应编辑器位置

DOCK_SLOT_LEFT_UL

左侧面板 - 上方区域

DOCK_SLOT_LEFT_BL

左侧面板 - 下方区域

DOCK_SLOT_RIGHT_UL

右侧面板 - 上方区域

DOCK_SLOT_RIGHT_BL

右侧面板 - 下方区域

制作停靠面板UI场景

停靠面板本质是普通UI场景,必须以 Control 系列节点作为根节点(推荐 VBoxContainer/HBoxContainer),可自由添加按钮、文本、输入框等UI控件。

面板逻辑脚本(my_dock.gd)

@toolextends VBoxContainer# 绑定场景内UI控件@onready var status_label: Label = $StatusLabel@onready var run_btn: Button = $RunButtonfunc _ready():    # 绑定按钮点击信号    run_btn.pressed.connect(_on_run_click)# 自定义按钮点击逻辑func _on_run_click():    status_label.text = "执行中..."    # 自定义工具逻辑(可拓展批量处理校验等功能)    status_label.text = "执行完成!操作成功"

停靠面板独立于主插件脚本,如需和编辑器核心交互,可通过信号传参、插件主脚本调用等方式实现。

实战:自定义编辑器工具栏按钮

对于单次触发、无需常驻界面的工具功能(一键校验、批量导出、快速重置等),可使用工具栏按钮实现,更加轻便简洁。

实现工具栏按钮

@toolextends EditorPluginvar tool_btn: Button# 插件加载:创建并挂载工具栏按钮func _enter_tree():    # 实例化按钮    tool_btn = Button.new()    tool_btn.text = "自定义工具按钮"    # 绑定点击事件    tool_btn.pressed.connect(_on_tool_btn_click)    # 挂载到编辑器顶部主工具栏    add_control_to_container(CONTAINER_TOOLBAR, tool_btn)# 插件卸载:销毁按钮资源func _exit_tree():    if tool_btn:        remove_control_from_container(CONTAINER_TOOLBAR, tool_btn)        tool_btn.queue_free()# 按钮点击回调逻辑func _on_tool_btn_click():    print("自定义工具栏按钮已触发!")    push_warning("工具执行成功"# 编辑器弹窗提示

编辑器容器位置常量

除顶部工具栏外,还可将自定义控件挂载到编辑器多个内置容器:

容器常量

对应编辑器位置

CONTAINER_TOOLBAR

编辑器顶部主工具栏

CONTAINER_SPATIAL_EDITOR_MENU

3D 编辑器菜单栏

CONTAINER_CANVAS_EDITOR_MENU

2D 编辑器菜单栏

CONTAINER_INSPECTOR_BOTTOM

属性检查器底部区域

实战:自定义属性检查器插件

Godot 编辑器默认自动展示节点属性,通过 EditorInspectorPlugin 类,可针对指定节点类型,定制专属的属性检查器UI,实现属性美化、附加信息展示、自定义操作等功能。

功能:选中 CharacterBody2D 节点时,在属性面板新增专属角色信息展示,自定义移动速度属性的显示样式。

主插件注册检查器插件

在主插件脚本中注册自定义属性检查器,插件卸载时同步注销,避免内存泄漏。

@toolextends EditorPluginvar custom_inspector: MyInspectorPluginfunc _enter_tree():    # 实例化并注册自定义属性检查器插件    custom_inspector = MyInspectorPlugin.new()    add_inspector_plugin(custom_inspector)func _exit_tree():    # 注销并释放检查器资源    if custom_inspector:        remove_inspector_plugin(custom_inspector)        custom_inspector.queue_free()

自定义检查器逻辑

新建脚本继承 EditorInspectorPlugin,实现节点匹配、自定义UI绘制、属性重写等核心逻辑。

@toolclass_name MyInspectorPluginextends EditorInspectorPlugin# 判断当前节点是否由本检查器接管func _can_handle(object: Object) -> bool:    # 仅对 CharacterBody2D 节点生效    return object is CharacterBody2D# 在属性面板顶部添加自定义UI(节点选中时触发)func _parse_begin(object: Object):    var title_label = Label.new()    title_label.text = "===== 角色专属信息面板 ====="    title_label.custom_minimum_size.x = 200    add_custom_control(title_label)# 拦截并自定义指定属性的展示样式func _parse_property(object, type, name, hint_type, hint_string, usage_flags, wide):    # 定制 speed 移动速度属性展示    if name == "speed":        var speed_label = Label.new()        speed_label.text = "当前移动速度:" + str(object.speed)        add_custom_control(speed_label)        return true # 拦截原生属性展示,使用自定义样式    return false

插件开发最佳实践

编辑器插件运行在引擎内核环境,资源管理不当会直接导致编辑器崩溃、内存泄漏、卡顿报错,以下是官方推荐开发规范与避坑要点。

注意事项

详细开发建议

空值强制校验

所有UI控件、插件对象在销毁前,必须做空值判断,避免空指针报错

逻辑环境分离

全程使用 Engine.is_editor_hint() 区分编辑器/游戏运行逻辑

资源彻底清理

_exit_tree() 中必须销毁所有自定义UI、注销所有插件实例,执行 queue_free()

统一资源预加载

插件资源、场景、素材统一使用 preload() 预加载,避免运行时加载异常

标准化异常提示

使用 push_warning() / push_error() 抛出插件异常,方便调试

案例对比

错误写法(会导致内存泄漏、编辑器崩溃)

func _exit_tree():    # 未清理任何资源,控件残留内存,插件重复启用会叠加报错    pass

规范写法

func _exit_tree():    # 清理停靠面板    if dock:        remove_control_from_docks(dock)        dock.queue_free()    # 清理属性检查器插件    if custom_inspector:        remove_inspector_plugin(custom_inspector)        custom_inspector.queue_free()    # 清理工具栏按钮    if tool_btn:        remove_control_from_container(CONTAINER_TOOLBAR, tool_btn)        tool_btn.queue_free()

总结

@tool 注解:编辑器扩展开发基础,让脚本在编辑器环境运行,必须通过 Engine.is_editor_hint() 分离双环境逻辑;

插件基础框架:遵循addons 目录规范,通过 plugin.cfg 配置插件信息,依托 EditorPlugin 生命周期管理插件;

三大插件功能:可自定义停靠面板(常驻界面)、工具栏按钮(快捷操作)、节点专属属性检查器;

核心开发原则:插件卸载时必须彻底清理所有自定义资源,做空值校验,杜绝内存泄漏和编辑器异常。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-12 01:55:54 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/855710.html
  2. 运行时间 : 0.095222s [ 吞吐率:10.50req/s ] 内存消耗:4,682.91kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=2246bf76d0d4598c4cceb7d0fdf52218
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000573s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000758s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000263s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000272s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000471s ]
  6. SELECT * FROM `set` [ RunTime:0.000193s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000574s ]
  8. SELECT * FROM `article` WHERE `id` = 855710 LIMIT 1 [ RunTime:0.000469s ]
  9. UPDATE `article` SET `lasttime` = 1783792554 WHERE `id` = 855710 [ RunTime:0.008659s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000355s ]
  11. SELECT * FROM `article` WHERE `id` < 855710 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000568s ]
  12. SELECT * FROM `article` WHERE `id` > 855710 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000777s ]
  13. SELECT * FROM `article` WHERE `id` < 855710 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001922s ]
  14. SELECT * FROM `article` WHERE `id` < 855710 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001279s ]
  15. SELECT * FROM `article` WHERE `id` < 855710 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.003903s ]
0.096866s