技能编辑流程优化
parent
e15af49d4e
commit
e0fad9ceb3
@ -0,0 +1,66 @@
|
||||
@tool
|
||||
extends EditorPlugin
|
||||
|
||||
var selected_skill_file: String
|
||||
var skill_popup: PopupMenu
|
||||
var skill_cfg_list: Array[SkillCfg]
|
||||
var menu_parent: Node
|
||||
|
||||
|
||||
func _enter_tree():
|
||||
var root: Node = EditorInterface.get_editor_main_screen()
|
||||
while root.get_parent() != null:
|
||||
root = root.get_parent()
|
||||
menu_parent = root.get_child(0).get_child(4).get_child(0).get_child(0).get_child(0)
|
||||
if menu_parent:
|
||||
skill_popup = PopupMenu.new()
|
||||
skill_popup.name = "技能配置"
|
||||
skill_popup.about_to_popup.connect(skill_popup_about_to_popup)
|
||||
skill_popup.index_pressed.connect(skill_popup_index_pressed)
|
||||
menu_parent.add_child(skill_popup)
|
||||
else:
|
||||
print("menu_parent is null")
|
||||
|
||||
|
||||
func skill_popup_about_to_popup():
|
||||
skill_cfg_list.clear()
|
||||
skill_popup.set_item_count(0)
|
||||
skill_cfg_list = Util.get_all_skill()
|
||||
for skill_cfg in skill_cfg_list:
|
||||
skill_popup.add_item(skill_cfg.get_res_name())
|
||||
|
||||
|
||||
func skill_popup_index_pressed(index: int):
|
||||
EditorInterface.select_file(skill_cfg_list[index].resource_path)
|
||||
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
var selected_paths: PackedStringArray = EditorInterface.get_selected_paths()
|
||||
if len(selected_paths) != 1:
|
||||
return
|
||||
var selected_path: String = selected_paths[0]
|
||||
if selected_skill_file == selected_path:
|
||||
return
|
||||
selected_skill_file = selected_path
|
||||
if not selected_path.ends_with(".tres"):
|
||||
return
|
||||
var res := ResourceLoader.load(selected_path)
|
||||
if not res is SkillCfg:
|
||||
return
|
||||
var skill_cfg: SkillCfg = res as SkillCfg
|
||||
|
||||
if not skill_cfg.skill_animation:
|
||||
return
|
||||
|
||||
EditorInterface.open_scene_from_path("res://scene/character/character.tscn")
|
||||
var root: Node = EditorInterface.get_edited_scene_root()
|
||||
var character_skill: AnimationPlayer = root.find_child("Skill") as AnimationPlayer
|
||||
EditorInterface.edit_node(character_skill)
|
||||
var animation_name: String = "animation_library/%s" % Util.get_resource_name(res)
|
||||
character_skill.current_animation = animation_name
|
||||
EditorInterface.edit_resource(res)
|
||||
|
||||
|
||||
func _exit_tree():
|
||||
remove_tool_menu_item("Test")
|
||||
if skill_popup: skill_popup.queue_free()
|
||||
@ -0,0 +1 @@
|
||||
uid://d4ahhmhgjwrr8
|
||||
@ -0,0 +1,7 @@
|
||||
[plugin]
|
||||
|
||||
name="EditorMenuTools"
|
||||
description=""
|
||||
author=""
|
||||
version=""
|
||||
script="editor_menu_tools.gd"
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue