[ 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()
{{
}}
}}
}}
" ) ;
}
public static void CreateScript ( string source, string defaultName = "NewScript.cs" , Texture2D icon = null )
{
ProjectWindowUtil. StartNameEditingIfProjectWindowExists ( 0 ,
ScriptableObject. CreateInstance < CreateScriptAsset> ( ) ,
$" { FileCreateHelper. GetSelectedPathOrFallback ( ) } / { defaultName } " ,
icon, source
) ;
}
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 ) ) ;
}
}
}