csharp
[MenuItem("Assets/Create/Format/Unit Script", false, 0)]
public static void CreateUnitScript()
{
FileCreateHelper.CreateScriptWithTitle(@$"
using System;
using System.Collections;
using System.Collections.Generic;
using AirFramework;
namespace {FrameworkSettings.instance.defaultNamespace}
{{
public class #NAME# : Unit
{{
protected override void OnDispose()
{{
}}
}}
}}
");
}
csharp
public static void CreateScript(string source, string defaultName = "NewScript.cs", Texture2D icon = null)
{
//开始编辑名字的操作
ProjectWindowUtil.StartNameEditingIfProjectWindowExists(0,
ScriptableObject.CreateInstance<CreateScriptAsset>(),
$"{FileCreateHelper.GetSelectedPathOrFallback()}/{defaultName}",
icon, source
);
}
csharp
using System.IO;
using System.Text;
using UnityEditor;
using UnityEditor.ProjectWindowCallback;
namespace AirFrameworkEditor
{
//用于创建文本
class CreateScriptAsset : EndNameEditAction
{
public override void Action(int instanceId, string pathName, string sourceCode)
{
UnityEngine.Object o = CreateScriptAssetFromTemplate(pathName, sourceCode);
ProjectWindowUtil.ShowCreatedAsset(o);
}
internal static UnityEngine.Object CreateScriptAssetFromTemplate(string pathName, string resourceFile)
{
string fullPath = Path.GetFullPath(pathName);
string text = resourceFile;
string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(pathName).Split('.')[0];
text = text.Replace("#NAME#", fileNameWithoutExtension.Replace(" ", string.Empty));
bool encoderShouldEmitUTF8Identifier = true;
bool throwOnInvalidBytes = false;
UTF8Encoding encoding = new UTF8Encoding(encoderShouldEmitUTF8Identifier, throwOnInvalidBytes);
bool append = false;
StreamWriter streamWriter = new StreamWriter(fullPath, append, encoding);
streamWriter.Write(text);
streamWriter.Close();
AssetDatabase.ImportAsset(pathName);
AssetDatabase.Refresh();
return AssetDatabase.LoadAssetAtPath(pathName, typeof(UnityEngine.Object));
}
}
}