1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- using UnityEngine;
- using System.Collections;
- using UnityEditor.ProjectWindowCallback;
- using System.IO;
- using UnityEditor;
- public class ApplicationStatusCreater
- {
- [MenuItem("Assets/Create/Application Status", false, 90)]
- public static void CreateNewLua()
- {
- ProjectWindowUtil.StartNameEditingIfProjectWindowExists(0,
- ScriptableObject.CreateInstance<CreateScriptAssetAction>(),
- GetSelectedPathOrFallback() + "/New Application Status.cs",
- null,
- "Assets/Script/Core/Editor/res/ApplicationStatusTemplate.txt");
- }
- public static string GetSelectedPathOrFallback()
- {
- string path = "Assets";
- foreach (UnityEngine.Object obj in Selection.GetFiltered(typeof(UnityEngine.Object), SelectionMode.Assets))
- {
- path = AssetDatabase.GetAssetPath(obj);
- if (!string.IsNullOrEmpty(path) && File.Exists(path))
- {
- path = Path.GetDirectoryName(path);
- break;
- }
- }
- return path;
- }
- class CreateScriptAssetAction : EndNameEditAction
- {
- public override void Action(int instanceId, string pathName, string resourceFile)
- {
- //创建资源
- UnityEngine.Object obj = CreateAssetFromTemplate(pathName, resourceFile);
- //高亮显示该资源
- ProjectWindowUtil.ShowCreatedAsset(obj);
- }
- internal static UnityEngine.Object CreateAssetFromTemplate(string pahtName, string resourceFile)
- {
- //获取要创建的资源的绝对路径
- string fullName = Path.GetFullPath(pahtName);
- string className = FileTool.RemoveExpandName( FileTool.GetFileNameByPath(fullName));
- //读取本地模板文件
- StreamReader reader = new StreamReader(resourceFile);
- string content = reader.ReadToEnd();
- reader.Close();
- //获取资源的文件名
- // string fileName = Path.GetFileNameWithoutExtension(pahtName);
- //替换默认的文件名
- content = content.Replace("{0}", className);
- //写入新文件
- StreamWriter writer = new StreamWriter(fullName, false, System.Text.Encoding.UTF8);
- writer.Write(content);
- writer.Close();
- //刷新本地资源
- AssetDatabase.ImportAsset(pahtName);
- AssetDatabase.Refresh();
- return AssetDatabase.LoadAssetAtPath(pahtName, typeof(UnityEngine.Object));
- }
- }
- }
|