64 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			64 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | #if UNITY_EDITOR | |||
|  | using UnityEditor; | |||
|  | 
 | |||
|  | #endif | |||
|  | 
 | |||
|  | namespace SRF.Helpers | |||
|  | { | |||
|  |     using System.IO; | |||
|  |     using UnityEngine; | |||
|  | 
 | |||
|  |     public static class AssetUtil | |||
|  |     { | |||
|  | #if UNITY_EDITOR | |||
|  | 
 | |||
|  |         //	This makes it easy to create, name and place unique new ScriptableObject asset files. | |||
|  |         /// <summary> | |||
|  |         /// </summary> | |||
|  |         public static T CreateAsset<T>() where T : ScriptableObject | |||
|  |         { | |||
|  |             var path = AssetDatabase.GetAssetPath(Selection.activeObject); | |||
|  | 
 | |||
|  |             if (path == "") | |||
|  |             { | |||
|  |                 path = "Assets"; | |||
|  |             } | |||
|  |             else if (Path.GetExtension(path) != "") | |||
|  |             { | |||
|  |                 path = path.Replace(Path.GetFileName(path), ""); | |||
|  |             } | |||
|  | 
 | |||
|  |             return CreateAsset<T>(path, "New " + typeof (T).Name); | |||
|  |         } | |||
|  | 
 | |||
|  |         public static T CreateAsset<T>(string path, string name) where T : ScriptableObject | |||
|  |         { | |||
|  |             if (string.IsNullOrEmpty(path)) | |||
|  |             { | |||
|  |                 path = "Assets"; | |||
|  |             } | |||
|  | 
 | |||
|  |             if (!name.EndsWith(".asset")) | |||
|  |             { | |||
|  |                 name += ".asset"; | |||
|  |             } | |||
|  | 
 | |||
|  |             var assetPathAndName = AssetDatabase.GenerateUniqueAssetPath(path + "/" + name); | |||
|  | 
 | |||
|  |             var asset = ScriptableObject.CreateInstance<T>(); | |||
|  |             AssetDatabase.CreateAsset(asset, assetPathAndName); | |||
|  |             AssetDatabase.SaveAssets(); | |||
|  | 
 | |||
|  |             return asset; | |||
|  |         } | |||
|  | 
 | |||
|  |         public static void SelectAssetInProjectView(Object asset) | |||
|  |         { | |||
|  |             EditorUtility.FocusProjectWindow(); | |||
|  |             Selection.activeObject = asset; | |||
|  |         } | |||
|  | 
 | |||
|  | #endif | |||
|  |     } | |||
|  | } |