前言
我们可以在Godot中使用插件来方便我们开发游戏,那么插件怎么制作呢?接下来我会简单的教大家制作插件的流程,以及如何发布
制作流程
创建插件
点击项目-项目设置-插件 来打开插件面板,点击右上角创建新插件,然后根据自己的需要填写信息,然后点击创建
创建插件后,在res://addons里面会多出来新建的插件文件夹,我们需要在插件面板启用插件
打开我们场景的插件脚本
创建插件会得到两个文件,插件名.gd(插件脚本),plugin.cfg(插件说明)
@tool
extends EditorPlugin
func _enter_tree() -> void:
# Initialization of the plugin goes here.
pass
func _exit_tree() -> void:
# Clean-up of the plugin goes here.
pass
第一行的@tool
表示该脚本会在编辑器模式下运行,如果没有 @tool
,该脚本只会在游戏运行时执行
第二行表示这是继承 EditorPlugin
,也就是继承自插件类
下面的两个函数是在该插件启用和禁用时所调用的函数
自定义节点
现在我们要创建一个自定义节点,可以编写下面这段代码
@tool
extends EditorPlugin
func _enter_tree() -> void:
var icon = get_editor_interface().get_editor_theme().get_icon("Node2D", "EditorIcons")
add_custom_type("CustomNode", "Node2D", preload("res://addons/插件文件夹/src/script.gd"),icon)
pass
func _exit_tree() -> void:
remove_custom_type("CustomNode")
pass
其中,icon是获取图标的,行代码会获取到Node2D节点的图标
add_custom_type方法是创建自定义节点的,在禁用插件的时候需要把这个自定义节点移除
add_custom_type(自定义节点名,继承自哪个节点,该自定义节点绑定的脚本,图标)
我们创建src文件夹,在里面建造我们指定的脚本,现在我们可以创建自定义的节点了
如果没有找到自定义节点,可能是没有加载出来,在插件面板里面开关一下插件就好了
接下来我们可以编写节点的脚本,我给大家列出来几种常用的声明编辑器面板变量的代码
@tool //别忘了添加
extends Node2D
@export var a : int = 10
@export_category("name")
@export var b : float = 10
@export_group("item")
@export_range(-1,1,0.01) var c : float = 0
@export var d : Texture
@export var e : Color = Color(1,1,1)
...
在编辑器里面的表现是这样的
如果想让变量在鼠标悬停的时候显示描述,我们可以在变量上一行用##来编写注释,例如
##This is a
@export var a : int = 10
总之,大家可以根据自己的需要来编写脚本代码,接下来我将教大家如何发布自己的插件
发布插件
我们可以访问https://godotengine.org/asset-library/asset来浏览插件
点击Submit Asset来提交我们自己的插件
填写信息,其中,协议可以选择MIT开源协议,我们需要把文件托管到GitHub,然后填写链接即可
具体注意事项请查看Godot的文档链接:
提交资源到资产库 — Godot Engine (4.x) 简体中文文档
注意填写的信息,比如图片链接的格式,我们要提交的插件zip文件,在提交的仓库不要选择GitHub,而是Custom,打包的插件文件夹从addons文件夹开始打包
我们提交的图片以及zip文件链接,应该是https://raw.githubusercontent.com/用户名/仓库名/分支名/路径/文件名
提交完成后,等待审批完成,成功之后就能在资源仓库里面访问了
如果有信息需要修改,我们也可以在My Assets里面找到要修改的插件,点击Edit进去修改,然后再次等待审核即可
总结
大家尽量制作完善,否则在发布后来回修改等审核也是件麻烦事
这里也给大家分享我开发的一个插件,LineMap2D,GitHub地址:LineMap2D at main · CN-GuoXiaoYao/GodotPlugin
这个插件基于Line2D,可以帮助大家简单的建造一些场景,还是有点bug,不太完善,大家根据需要随时修改及使用