Skip to content

Latest commit

 

History

History
70 lines (54 loc) · 2.11 KB

templates.md

File metadata and controls

70 lines (54 loc) · 2.11 KB

Script Templates

Script templates can be used to allow users to create a new script based on a template.

Create a script template

Create a text document anywhere in the Content folder and create the template that you desire. It is recommended the use .cs or .h/.cpp for the file extension for the template files.

The available identifiers

Use the following identifiers to replace certain parts of your template with information upon creation by the user.

Identifier Description
%copyright% Replaced with the copyright comment
%class% Replaced with the class name. This is a modified version of the file name.
%filename% C++ Template only. Replaced with the file name.
%module% C++ Template only. Replaced with the module name.
%namespace% C# Template only. Replaced with the module name.

Create a new template proxy

New C# template proxy:

[ContentContextMenu("New/C#/My new template")]
public class TestingCSharpProxy : CSharpProxy 
{
    public override string Name => "My new template";

    protected override void GetTemplatePath(out string path)
    {
        // Can use `Globals` class to get specific project folders
        path = "path to new .cs template";
    }
}

New C++ template proxy:

[ContentContextMenu("New/C++/My new template")]
public class TestingCppProxy : CppProxy
{
    public override string Name => "My new template";

    protected override void GetTemplatePaths(out string headerTemplate, out string sourceTemplate)
    {
        // Can use `Globals` class to get specific project folders
        headerTemplate = "path to new .h template";
        sourceTemplate = "path to new .cpp template";
    }
}

Add the new proxy to the ContentDatabase using an EditorPlugin

public class TestEditorPlugin : EditorPlugin
{
    public override void InitializeEditor()
    {
        base.InitializeEditor();
        
        Editor.ContentDatabase.AddProxy(new TestingCSharpProxy());
        Editor.ContentDatabase.AddProxy(new TestingCppProxy());
        Editor.ContentDatabase.Rebuild(true);
    }
}