diff --git a/Source/Editor/Content/Proxy/PrefabProxy.cs b/Source/Editor/Content/Proxy/PrefabProxy.cs
index ee3674daa..18860995e 100644
--- a/Source/Editor/Content/Proxy/PrefabProxy.cs
+++ b/Source/Editor/Content/Proxy/PrefabProxy.cs
@@ -1,6 +1,7 @@
// Copyright (c) 2012-2024 Wojciech Figat. All rights reserved.
using System;
+using System.IO;
using FlaxEditor.Content.Thumbnails;
using FlaxEditor.Viewport.Previews;
using FlaxEditor.Windows;
@@ -194,4 +195,64 @@ namespace FlaxEditor.Content
base.Dispose();
}
}
+
+ ///
+ /// Content proxy for quick UI Control prefab creation as widget.
+ ///
+ [ContentContextMenu("New/Widget")]
+ internal sealed class WidgetProxy : AssetProxy
+ {
+ ///
+ public override string Name => "UI Widget";
+
+ ///
+ public override bool IsProxyFor(ContentItem item)
+ {
+ return false;
+ }
+
+ ///
+ public override string FileExtension => PrefabProxy.Extension;
+
+ ///
+ public override EditorWindow Open(Editor editor, ContentItem item)
+ {
+ return null;
+ }
+
+ ///
+ public override Color AccentColor => Color.Transparent;
+
+ ///
+ public override string TypeName => PrefabProxy.AssetTypename;
+
+ ///
+ public override AssetItem ConstructItem(string path, string typeName, ref Guid id)
+ {
+ return null;
+ }
+
+ ///
+ public override bool CanCreate(ContentFolder targetLocation)
+ {
+ return targetLocation.CanHaveAssets;
+ }
+
+ ///
+ public override void Create(string outputPath, object arg)
+ {
+ // Create prefab with UI Control
+ var actor = new UIControl
+ {
+ Name = Path.GetFileNameWithoutExtension(outputPath),
+ StaticFlags = StaticFlags.None,
+ };
+ actor.Control = new Button
+ {
+ Text = "Button",
+ };
+ PrefabManager.CreatePrefab(actor, outputPath, false);
+ Object.Destroy(actor, 20.0f);
+ }
+ }
}
diff --git a/Source/Editor/Modules/ContentDatabaseModule.cs b/Source/Editor/Modules/ContentDatabaseModule.cs
index fd830db86..0e4e96d30 100644
--- a/Source/Editor/Modules/ContentDatabaseModule.cs
+++ b/Source/Editor/Modules/ContentDatabaseModule.cs
@@ -1106,6 +1106,7 @@ namespace FlaxEditor.Modules
Proxy.Add(new VisualScriptProxy());
Proxy.Add(new BehaviorTreeProxy());
Proxy.Add(new LocalizedStringTableProxy());
+ Proxy.Add(new WidgetProxy());
Proxy.Add(new FileProxy());
Proxy.Add(new SpawnableJsonAssetProxy());