Skip to content

Instantly share code, notes, and snippets.

@hadashiA
Created June 23, 2020 15:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hadashiA/8403c391a229c3516471d05991406349 to your computer and use it in GitHub Desktop.
Save hadashiA/8403c391a229c3516471d05991406349 to your computer and use it in GitHub Desktop.
public sealed class ScriptTemplateProcessor : UnityEditor.AssetModificationProcessor
{
const string MonoInstallerTemplate =
"using VContainer;\n" +
"using VContainer.Unity;\n" +
"\n" +
"public sealed class #SCRIPTNAME# : MonoInstaller\n" +
"{\n" +
" public override void Install(UnityContainerBuilder builder)\n" +
" {\n" +
" }\n" +
"}\n";
public static void OnWillCreateAsset(string metaPath)
{
var suffixIndex = metaPath.LastIndexOf(".meta");
if (suffixIndex < 0)
{
return;
}
var scriptPath = metaPath.Substring(0, suffixIndex);
var basename = Path.GetFileNameWithoutExtension(scriptPath);
var extname = Path.GetExtension(scriptPath);
if (extname != ".cs")
{
return;
}
if (scriptPath.StartsWith("Assets/"))
{
scriptPath = scriptPath.Substring("Assets/".Length);
}
var fullPath = Path.Combine(Application.dataPath, scriptPath);
if (scriptPath.EndsWith("Installer.cs"))
{
var content = MonoInstallerTemplate.Replace("#SCRIPTNAME#", basename);
System.IO.File.WriteAllText(fullPath, content);
AssetDatabase.Refresh();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment