コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Unity で T4テンプレートを使用できる「t4-templates-unity3d」紹介

はじめに

「t4-templates-unity3d」を Unity プロジェクトに導入することで
Unity で T4テンプレートを使用できるようになります

使い方

Unity プロジェクトに拡張子が「.tt」のファイルを追加します

f:id:baba_s:20171101185719p:plain

そして、.tt ファイルにコードを記述して、Inspector で「Generate」ボタンを押すと、
T4テンプレートを元に C# のコードが生成されます

<#@ template debug="false" hostspecific="true" language="C#v3.5" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="UnityEngine" #>
<#@ import namespace="UnityEditor" #>
<#@ output extension=".cs" #>
public class Example
{
<# 
    var scenes = EditorBuildSettings.scenes
        .Select(c => Path.GetFileNameWithoutExtension(c.path))
        .Distinct()
    ;

    foreach (var n in scenes)
    {
#>
    public const string <#= n #> = "<#= n #>";
<# 
    }
#>
}

上記のような .tt ファイルを用意して、C# のコードを Generate すると

public class Example
{
    public const string Example1 = "Example1";
    public const string Example2 = "Example2";
    public const string Example3 = "Example3";
}

このような、シーン名を定数で管理する C# のクラスが生成されます

関連記事