89 lines
2.6 KiB
C#
89 lines
2.6 KiB
C#
using Godot;
|
|
using System;
|
|
|
|
/// <summary>
|
|
/// 简化的编辑器入口点
|
|
/// 直接在 Godot 编辑器工具栏添加按钮
|
|
/// </summary>
|
|
[Tool]
|
|
public partial class EditorImportPlugin : EditorPlugin
|
|
{
|
|
private Button _importButton;
|
|
private CrossEngineMigration.Godot.Editor.ImportWindow _importWindow;
|
|
|
|
public override void _EnterTree()
|
|
{
|
|
base._EnterTree();
|
|
|
|
GD.Print("[EditorImportPlugin] 初始化...");
|
|
|
|
// 创建工具栏按钮
|
|
_importButton = new Button();
|
|
_importButton.Text = "导入Unity场景";
|
|
_importButton.TooltipText = "导入Unity导出的.cebundle文件";
|
|
_importButton.Pressed += OnImportButtonPressed;
|
|
|
|
AddControlToContainer(CustomControlContainer.Toolbar, _importButton);
|
|
|
|
GD.Print("[EditorImportPlugin] 工具栏按钮已添加");
|
|
}
|
|
|
|
public override void _ExitTree()
|
|
{
|
|
base._ExitTree();
|
|
|
|
GD.Print("[EditorImportPlugin] 清理...");
|
|
|
|
// 移除工具栏按钮
|
|
if (_importButton != null)
|
|
{
|
|
RemoveControlFromContainer(CustomControlContainer.Toolbar, _importButton);
|
|
_importButton.QueueFree();
|
|
_importButton = null;
|
|
}
|
|
|
|
// 移除导入窗口
|
|
if (_importWindow != null)
|
|
{
|
|
RemoveControlFromBottomPanel(_importWindow);
|
|
_importWindow.QueueFree();
|
|
_importWindow = null;
|
|
}
|
|
|
|
GD.Print("[EditorImportPlugin] 清理完成");
|
|
}
|
|
|
|
private void OnImportButtonPressed()
|
|
{
|
|
GD.Print("[EditorImportPlugin] 导入按钮被点击");
|
|
|
|
// 创建或显示导入窗口
|
|
if (_importWindow == null)
|
|
{
|
|
_importWindow = new CrossEngineMigration.Godot.Editor.ImportWindow();
|
|
_importWindow.Name = "Unity场景导入器";
|
|
|
|
// 添加到底部面板
|
|
AddControlToBottomPanel(_importWindow, "Unity导入");
|
|
|
|
GD.Print("[EditorImportPlugin] 导入窗口已创建");
|
|
}
|
|
|
|
// 显示导入窗口
|
|
MakeBottomPanelItemVisible(_importWindow);
|
|
|
|
// 刷新窗口内容
|
|
_importWindow.Refresh();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 快速导入场景(可以从其他脚本调用)
|
|
/// </summary>
|
|
public Node QuickImportScene(string filePath)
|
|
{
|
|
GD.Print($"[EditorImportPlugin] 快速导入:{filePath}");
|
|
|
|
// 使用现有的导入系统
|
|
return CrossEngineMigration.Godot.SceneImporter.ImportFromFile(filePath);
|
|
}
|
|
} |