diff --git a/Content/Editor/Scripting/GamePluginTemplate.cs b/Content/Editor/Scripting/GamePluginTemplate.cs
new file mode 100644
index 000000000..d110fa68d
--- /dev/null
+++ b/Content/Editor/Scripting/GamePluginTemplate.cs
@@ -0,0 +1,25 @@
+%copyright%using System;
+using System.Collections.Generic;
+using FlaxEngine;
+
+namespace %namespace%;
+
+///
+/// %class% GamePlugin.
+///
+public class %class% : GamePlugin
+{
+ ///
+ public override void Initialize()
+ {
+ base.Initialize();
+
+ }
+
+ ///
+ public override void Deinitialize()
+ {
+ base.Deinitialize();
+
+ }
+}
\ No newline at end of file
diff --git a/Source/Editor/Content/Proxy/CSharpProxy.cs b/Source/Editor/Content/Proxy/CSharpProxy.cs
index 8abdf8b30..f0a7997c7 100644
--- a/Source/Editor/Content/Proxy/CSharpProxy.cs
+++ b/Source/Editor/Content/Proxy/CSharpProxy.cs
@@ -106,6 +106,23 @@ namespace FlaxEditor.Content
}
}
+ ///
+ /// Context proxy object for C# GamePlugin files.
+ ///
+ ///
+ [ContentContextMenu("New/C#/C# GamePlugin")]
+ public class CSharpGamePluginProxy : CSharpProxy
+ {
+ ///
+ public override string Name => "C# GamePlugin";
+
+ ///
+ protected override void GetTemplatePath(out string path)
+ {
+ path = StringUtils.CombinePaths(Globals.EngineContentFolder, "Editor/Scripting/GamePluginTemplate.cs");
+ }
+ }
+
///
/// Context proxy object for empty C# files.
///
diff --git a/Source/Editor/Modules/ContentDatabaseModule.cs b/Source/Editor/Modules/ContentDatabaseModule.cs
index 7a85107d9..4de7b593b 100644
--- a/Source/Editor/Modules/ContentDatabaseModule.cs
+++ b/Source/Editor/Modules/ContentDatabaseModule.cs
@@ -1140,6 +1140,7 @@ namespace FlaxEditor.Modules
Proxy.Add(new CSharpEmptyStructProxy());
Proxy.Add(new CSharpEmptyInterfaceProxy());
Proxy.Add(new CSharpActorProxy());
+ Proxy.Add(new CSharpGamePluginProxy());
Proxy.Add(new CppAssetProxy());
Proxy.Add(new CppStaticClassProxy());
Proxy.Add(new CppScriptProxy());