【发布时间】:2022-04-14 02:15:15
【问题描述】:
我正在尝试为我的播放器控制器创建自定义类型。
首先我使用“脚本类”:
extends Node
class_name PlayerController
export var max_speed = 32
export var id = 1
export(NodePath) var node_path
onready var node = get_node(node_path)
...
我希望它与节点一样位于“PlayerController”专用部分,因此可以继承并在那里查看漂亮的属性堆栈。
我认为这是因为与常规扩展相比,“脚本类”被简化了。所以我创建了一个。
tool
extends EditorPlugin
func _enter_tree():
add_custom_type("PlayerController", "Node", preload("PlayerController.gd"),preload("PlayerController.svg"))
func _exit_tree():
pass
结果实际上是一样的。
我发现以这种方式创建的“自定义类型”不是“自定义类型”,而只是附有脚本的父类型。可以在文档中确认:
void add_custom_type(type: String, base: String, script: Script, icon: Texture)
添加自定义类型,该类型将出现在节点或资源列表中。可以选择传递一个图标。
选择给定节点或资源时,将实现基本类型(即“空间”,“控制”,“资源”),然后将加载脚本并将其设置为此对象。强>
您可以使用虚方法handles() 来检查您的自定义对象是否正在被编辑,方法是检查脚本或使用is 关键字。
在运行时,这将是一个带有脚本的简单对象,因此不需要调用此函数。
我的问题是: 可以创建真正的自定义类型吗?
【问题讨论】:
标签: godot