Unity Editor 编辑器扩展 十三 自定义创建资源
来源:互联网 发布:传奇怪物数据库下载 编辑:程序博客网 时间:2024/05/14 00:56
目录
- 初级资源创建
- 中级资源创建
- 更自由的自定义资源创建
初级资源创建
Editor文件夹下创建脚本:
using UnityEngine;using UnityEditor;public class CreateTest{ [MenuItem ("Assets/Create ExampleAssets")] static void CreateExampleAssets () { var material = new Material (Shader.Find ("Standard")); ProjectWindowUtil.CreateAsset (material, "New Material.mat"); }}
点击Assets--Create ExampleAssets 就会发现一个材质球被创建
中级资源创建
Editor文件夹下创建脚本:
using UnityEngine;using UnityEditor;public class CreateMaterial{ [MenuItem ("Assets/Create Material")] static void CreateExampleAssets () { var material = new Material (Shader.Find ("Standard")); var instanceID = material.GetInstanceID (); var icon = AssetPreview.GetMiniThumbnail (material); var endNameEditAction = ScriptableObject.CreateInstance<DoCreateMaterialAsset> (); ProjectWindowUtil.StartNameEditingIfProjectWindowExists (instanceID, endNameEditAction, "New Material.mat", icon, ""); }}
点击Assets--Create Material 创建一个特定的材质球
更自由的自定义资源创建
Editor文件夹下创建脚本:
using UnityEngine;using UnityEditor;using UnityEditor.ProjectWindowCallback;public class DoCreateMaterialAsset : EndNameEditAction{ public override void Action (int instanceId, string pathName, string resourceFile) { var mat = (Material)EditorUtility.InstanceIDToObject (instanceId); mat.color = Color.red; AssetDatabase.CreateAsset (mat, pathName); AssetDatabase.ImportAsset (pathName); ProjectWindowUtil.ShowCreatedAsset (mat); }}
Editor文件夹下创建脚本:
using System.IO;using System.Text;using UnityEditor;using UnityEditor.ProjectWindowCallback;using System;public class DoCreateScriptAsset : EndNameEditAction{ public override void Action (int instanceId, string pathName, string resourceFile) { var text = File.ReadAllText (resourceFile); var className = Path.GetFileNameWithoutExtension (pathName); //清除空格 className = className.Replace (" ", ""); text ="//Programer: "+"porgramerName"+"\n//code date:"+DateTime.Now.Date.ToShortDateString()+"\n" +text.Replace ("#SCRIPTNAME#", className); text += "\n//自己添加Something!"+"\n"; //utf8 var encoding = new UTF8Encoding (true, false); File.WriteAllText (pathName, text, encoding); AssetDatabase.ImportAsset (pathName); var asset = AssetDatabase.LoadAssetAtPath<MonoScript> (pathName); ProjectWindowUtil.ShowCreatedAsset (asset); }}
Editor文件夹下创建脚本:
using UnityEditor;using UnityEngine;using System.IO;public class CreateAssets : EditorWindow{ [MenuItem("Window/CreatAssets")] static void Open () { GetWindow<CreateAssets> (); } public string scriptName,materialName; void OnGUI() { var options = new []{GUILayout.Width (100), GUILayout.Height (20)}; GUILayout.Label ("CreateScripts"); EditorGUILayout.Space (); EditorGUILayout.BeginHorizontal (); EditorGUILayout.LabelField ("ScriptName",options); scriptName= EditorGUILayout.TextArea (scriptName); EditorGUILayout.EndHorizontal (); if (GUILayout.Button ("Create")) { CreateScript (scriptName); } GUILayout.Label ("CreateMaterial"); EditorGUILayout .Space (); EditorGUILayout.BeginHorizontal (); EditorGUILayout.LabelField ("materialName",options); materialName= EditorGUILayout.TextArea (materialName); EditorGUILayout.EndHorizontal (); if (GUILayout.Button ("Create")) { CreateMaterial (materialName); } }// 新建自定义脚本 static void CreateScript (string scriptName) { var resourceFile = Path.Combine (EditorApplication.applicationContentsPath, "Resources/ScriptTemplates/81-C# Script-NewBehaviourScript.cs.txt"); Debug.Log (resourceFile); Texture2D csIcon = EditorGUIUtility.IconContent ("cs Script Icon").image as Texture2D; var endNameEditAction = ScriptableObject.CreateInstance<DoCreateScriptAsset> (); ProjectWindowUtil.StartNameEditingIfProjectWindowExists (0, endNameEditAction, scriptName+".cs", csIcon, resourceFile); } //新建Material static void CreateMaterial (string materialName) { var material = new Material (Shader.Find ("Standard")); var instanceID = material.GetInstanceID (); var icon = AssetPreview.GetMiniThumbnail (material); var endNameEditAction = ScriptableObject.CreateInstance<DoCreateMaterialAsset> (); ProjectWindowUtil.StartNameEditingIfProjectWindowExists (instanceID, endNameEditAction, materialName+".mat", icon, ""); }}
Window–Create Assets打开如下窗口
这个是自定义生成的脚本
关于自定义脚本中间的内容,需要更改它的生成模版,在Unity安装文件内,这里就不啰嗦了,大家可参照这篇文章:http://blog.csdn.net/warrenmondeville/article/details/53577085。
本文链接:http://blog.csdn.net/WarrenMondeville/article/details/53807926
0 0
- Unity Editor 编辑器扩展 十三 自定义创建资源
- Unity Editor 编辑器扩展 七 创建脚本模版
- Unity Editor 编辑器扩展 五 EditorGUI
- Unity Editor 编辑器扩展 六 EditorWindow
- Unity Editor 编辑器扩展 八 Undo
- Unity Editor 编辑器扩展 九 Gizmos
- Unity Editor 编辑器扩展 十 Handle控件
- Unity Editor 编辑器扩展 十二 OverWriter
- 【Unity资源】(编辑器扩展/建模)
- 编辑器扩展(Editor),创建Cube
- Unity Editor 编辑器扩展三 Unity Editor 数据持久化及Editor窗口的初识
- Unity Editor 编辑器扩展二 Inspector面板特殊属性
- Unity Editor 编辑器扩展 十一 Inspector可排序列表
- Unity创建自定义窗口编辑器
- Unity Editor扩展
- Unity Editor编辑器(MenuItem)
- 【代码挖掘】创建unity工程常用目录的editor编辑器
- Unity3D 自定义 Editor 扩展
- Nginx SSL 结合Tomcat 重定向URL变成HTTP的问题
- Leetcode Binary Tree Maximum Path Sum
- Unity Editor 编辑器扩展 十二 OverWriter
- tortoisegit 常见错误disconnected no supported authentication methods available(server sent: publickey)
- 可以借鉴的js写法
- Unity Editor 编辑器扩展 十三 自定义创建资源
- system
- git
- Leetcode Trapping Rain Water
- 2016.12.22
- RecyclerView添加onItemClickListener回调接口
- 【LeetCode】 171. Excel Sheet Column Number
- Hello World
- Leetcode 122. Best Time to Buy and Sell Stock II