创建脚本模板

Godot提供了一种在创建新脚本时使用脚本模板的方法,在"脚本创建对话框"中可以看到:

../../_images/script_create_dialog_templates.png

默认提供一组默认脚本模板,但也可以针对每个项目和编辑器修改现有脚本模板并创建新模板.

模板所在位置

有两个地方可以管理模板.

编辑器定义的模板

这些在任何项目中都可以全局使用.这些模板的位置是根据操作系统而确定的:

  • Windows: %APPDATA%\Godot\script_templates\

  • Linux: $HOME/.config/godot/script_templates/

  • macOS: $HOME/Library/Application Support/Godot/script_templates/

如果未检测到 script_templates ,Godot将自动创建一组默认的内置模板.在默认模板被意外覆盖的时候可以用这个方法重置.

项目定义的模板

搜索模板的默认路径是 res://script_templates/ 文件夹.可以通过代码和编辑器在 项目设置 中配置 editor/script_templates_search_path 设置来更改路径.

如果在项目中未找到 script_templates 文件夹,则将其忽略.

语言支持和重写行为

如果一个语言实现了根据模板生成脚本的方法,你就可以创建一个对应拓展名的文件作为模板.对于 GDScript 和 C#, 拓展名分别是``gd`` 和 cs.

注解

这个脚本模板跟正常的脚本文件有相同的拓展名.这可能会导致脚本解析器把它们作为工程中的正常脚本进行处理.为了避免这样的问题,请在这个模板文件所在的文件夹下创建一个 .gdignore 文件来忽略它们.这样的话,这个文件夹也不会出现在工程的文件系统中了,不过你还可以使用外部的文本编辑器在任何时间来对这些模板文件进行编辑.

如果编辑器内置的模板与项目中创建的模板文件具有相同的文件名,则内置的模板会被自动隐藏.

默认模板

"默认"模板总是根据每种语言动态生成,并且不能配置也不能覆盖,但是你可以使用它们作为创建其他模板的基础.

extends %BASE%


# Declare member variables here. Examples:
# var a%INT_TYPE% = 2
# var b%STRING_TYPE% = "text"


# Called when the node enters the scene tree for the first time.
func _ready()%VOID_RETURN%:
    pass # Replace with function body.


# Called every frame. 'delta' is the elapsed time since the previous frame.
#func _process(delta%FLOAT_TYPE%)%VOID_RETURN%:
#   pass
using Godot;
using System;

public class %CLASS% : %BASE%
{
    // Declare member variables here. Examples:
    // private int a = 2;
    // private string b = "text";

    // Called when the node enters the scene tree for the first time.
    public override void _Ready()
    {

    }

//  // Called every frame. 'delta' is the elapsed time since the previous frame.
//  public override void _Process(float delta)
//  {
//
//  }
}

模板占位符

下面列出当前已实现的所有模板占位符.

基本占位符

占位符

描述

%CLASS%

新建类的名称(只在 C# 中使用).

%BASE%

新建脚本的基类型.

%TS%

缩进占位符. 缩进字符的类型和数量分别由 EditorSettings 中的 text_editor/indent/typetext_editor/indent/size 两个设置决定.

类型占位符

这些只在使用 GDScript 的静态类型时有用.这些占位符是否被替换取决于 EditorSettings 中的 text_editor/completion/add_type_hints 设置.

占位符

%INT_TYPE%

: int

%STRING_TYPE%

:String

%FLOAT_TYPE%

: float

%VOID_RETURN%

-> void