mirror of
https://github.com/godotengine/godot-docs.git
synced 2026-01-05 22:09:56 +03:00
84 lines
1.8 KiB
ReStructuredText
84 lines
1.8 KiB
ReStructuredText
.. _doc_inspector_plugins:
|
|
|
|
Inspector Plugins
|
|
=====================
|
|
|
|
Introduction
|
|
------------
|
|
|
|
Godot 3.1 comes with a new inspector. Adding plugins to it is now possible.
|
|
|
|
This tutorial will explain the process.
|
|
|
|
|
|
Inspector Plugin
|
|
----------------
|
|
|
|
This short tutorial will explain how to make a simple value editor.
|
|
Create an EditorInspectorPlugin first. This is needed to initialize your plugin.
|
|
|
|
|
|
.. tabs::
|
|
.. code-tab:: gdscript GDScript
|
|
|
|
# MyEditorPlugin.gd
|
|
|
|
extends EditorInspectorPlugin
|
|
|
|
func can_handle(object):
|
|
# if only editing a specific type
|
|
# return object is TheTypeIWant
|
|
# if everything is supported
|
|
return true
|
|
|
|
func parse_property(object,type,path,hint,hint_text,usage):
|
|
if (type==TYPE_INT):
|
|
add_custom_property_editor(path,MyEditor.new())
|
|
return true # I want this one
|
|
else:
|
|
return false
|
|
|
|
|
|
Editor
|
|
------
|
|
|
|
|
|
Here is an editor for editing integers
|
|
|
|
.. tabs::
|
|
.. code-tab:: gdscript GDScript
|
|
|
|
# MyEditor.gd
|
|
class_name MyEditor
|
|
|
|
var updating = false
|
|
|
|
func _spin_changed(value):
|
|
if (updating):
|
|
return
|
|
|
|
emit_changed( get_property(), value )
|
|
|
|
func update_property():
|
|
var new_value = get_edited_object()[ get_edited_property() ]
|
|
|
|
updating=true
|
|
spin.set_value( new_value )
|
|
updating=false
|
|
|
|
var spin = EditorSpinSlider.new() # use the new spin slider
|
|
func _init():
|
|
# if you want to put the editor below the label
|
|
# set_bottom_editor( spin )
|
|
# else use:
|
|
add_child( spin )
|
|
# to remember focus when selected back
|
|
add_focusable( spin )
|
|
spin.set_min(0)
|
|
spin.set_max(1000)
|
|
spin.connect("value_changed",self,"_spin_changed")
|
|
|
|
|
|
|
|
|