Godot Engine 3.2.3.rc1
文章目录
- 步骤
- 1. 创建插件框架
- 2. 创建UI
- 3. 写脚本
- 演示
之前写过一篇博文《GDScript:使用EditorScript开发简单的编辑器脚本》,编辑器脚本(EditorScript只提供了一个run
方法,它的访问能力也很有限,所以只能实现一些非常简单的功能,编辑器插件(Editor Plugin)就强大太多了,可以访问场景树,访问编辑器UI,甚至可以直接使用Godot的UI系统创建插件的UI
在项目设置(Project Settings)中找到插件(Plugins)标签,然后点击创建,实际上这一步是让我们为插件创建如下几样东西:
- 插件名。
- 插件文件夹,注意:所有插件都会被统一放在"res://addons"文件夹下,所以你创建的只是一个子文件夹。
- 名为"plugin.cfg"插件配置文件。
- 插件描述,作者,版本号。
- 编辑器脚本,这个才是真正要完成逻辑的脚本,可以理解为这个插件的
main
函数。
创建完毕后你就拥有了下面的文件
这个配置文件手动创建也是可以的
[plugin]
name="HelloWorld"
description="HelloWorld Plugin"
author="开发游戏的老王"
version="0.0.1"
script="HelloWorld.gd"
初始的脚本内容
注意:EditorPlugin
是继承于Node
的
tool
extends EditorPlugin
func _enter_tree():
pass
func _exit_tree():
pass
2. 创建UI
非常简单的一个按钮
#HelloWorld.gd
tool
extends EditorPlugin
var p :Control = null
func _enter_tree():
p = load("res://addons/HelloWorld/SayHello.tscn").instance()
p.get_node("Btn_say_hello").connect("pressed",self,"_say_hello")
func _input(event):
if Input.is_key_pressed(KEY_F11) and not is_a_parent_of(p):
add_child(p)
if Input.is_key_pressed(KEY_F12) and is_a_parent_of(p):
remove_child(p)
func _say_hello():
print("Hello from Editor Plugin")
演示
按F11/F12
分别为显示和隐藏UI 点击按钮就会执行
_say_hello
了。