Unity(二十):创建自定义脚本模板

编辑器内部自定义脚本存储位置展示

在这里插入图片描述

创建自己的自定义脚本

在这里插入图片描述

using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using UnityEditor;
using UnityEditor.ProjectWindowCallback;
using UnityEngine;internal class CustomUnityEditor : EditorWindow
{private static EditorWindow _window;private static List<Dictionary<string, string>> _paths;[MenuItem("Assets/Create/自定义脚本(多选)", false, 0)]private static void CreateCustomScripts(){_paths = GetSelectedDirPath();_window = GetWindow<CustomUnityEditor>("创建脚本(多选)");_window.Show();}[MenuItem("Assets/Create/自定义脚本(单选)", false, 1)]private static void CreateCustomScript(){_paths = new List<Dictionary<string, string>>();var paths = GetSelectedDirPath();if (paths.Count != 0){_paths.Add(paths[paths.Count - 1]);CreateScriptFile();}elseEditorUtility.DisplayDialog("提示", "请选择文件夹", "确定");}// 获取文件夹路径private static List<Dictionary<string, string>> GetSelectedDirPath(){// Object[] GetFiltered(Type type, SelectionMode mode)// type ---> 只会检索此类型的对象// mode ---> SelectionMode.Assets 仅返回 Asset 目录中的资产对象var selections =Selection.GetFiltered(typeof(Object), SelectionMode.Assets); // Object ---> UnityEngine.Object// 路径、文件名称 集合return (from obj in selectionslet path = AssetDatabase.GetAssetPath(obj)where Directory.Exists(path)select new Dictionary<string, string>{{ "name", "NewScript" },{ "path", AssetDatabase.GetAssetPath(obj) }}).ToList();}// 创建文件private static void CreateScriptFile(){foreach (var pathInfo in _paths.Where(pathInfo => pathInfo["name"] != "")){const int instanceId = 0;var endAction = CreateInstance<NameByEnterOrUnfocus>();var pathName = $"{pathInfo["path"]}/{pathInfo["name"]}.cs";const string resourceFile = "Assets/Editor/ScriptTemplates/ScriptTemplate.cs.txt";#if false* 参数1:instanceId       已编辑资源的实例 ID。* 参数2:endAction        监听编辑名称的类的实例化* 参数3:pathName         创建的文件路径(包括文件名)* 参数4:icon             图标  * 参数5:resourceFile     模板路径endAction 直接使用 new NameByEnterOrUnfocus() 出现以下警告:NameByEnterOrUnfocus must be instantiated using the ScriptableObject.CreateInstance method instead of new NameByEnterOrUnfocus.必须使用ScriptableObject实例化NameByEnterOrUnfocus。CreateInstance方法,而不是新的NameByEnterOrUnfocus。
#endifProjectWindowUtil.StartNameEditingIfProjectWindowExists(instanceId, endAction, pathName, null,resourceFile);}}private void OnGUI(){GUILayout.Label("⚠ 不填写文件名称不会创建脚本", new GUIStyle { normal = { textColor = Color.red } });foreach (var pathInfo in _paths)pathInfo["name"] = EditorGUILayout.TextField(pathInfo["path"], pathInfo["name"]);if (GUILayout.Button("确定")){CreateScriptFile();_window.Close();}}
}internal class NameByEnterOrUnfocus : EndNameEditAction
{/// <summary>/// 当用户通过按下 Enter 键或失去键盘输入焦点接受编辑后的名称时,Unity 调用此函数/// </summary>/// <param name="instanceId">已编辑资源的实例 ID。</param>/// <param name="pathName">资源的路径。</param>/// <param name="resourceFile">传递给ProjectWindowUtil.StartNameEditingIfProjectWindowExists的资源文件字符串参数</param>public override void Action(int instanceId, string pathName, string resourceFile){var obj = CreateScript(pathName, resourceFile);// 创建并展示ProjectWindowUtil.ShowCreatedAsset(obj);}private static Object CreateScript(string pathName, string resourceFile){// 读取模板文件内容var streamReader = new StreamReader(resourceFile);var templateText = streamReader.ReadToEnd();streamReader.Close();// 获取创建的脚本文件名称var fileName = Path.GetFileNameWithoutExtension(pathName);// 正则替换文本内自定义的变量var scriptText = Regex.Replace(templateText, "#NAME#", fileName);// 写入脚本var streamWriter = new StreamWriter(pathName);streamWriter.Write(scriptText);streamWriter.Close();// 在路径导入资源AssetDatabase.ImportAsset(pathName);// 返回给定路径assetPath类型类型的第一个资源对象return AssetDatabase.LoadAssetAtPath(pathName, typeof(Object));}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/143161.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

修改Visual Studio中C#中的默认脚本模板方法

目录 一、修改后的效果 二、修改Visual Studio中C#的默认脚本步骤 三、验证修改模板是否成功 一、修改后的效果 二、修改Visual Studio中C#的默认脚本步骤 ①如果按照Visual Studio的默认安装路径安装该IDE,则路径为&#xff1a; C:\Program Files (x86)\Microsoft Visual …

Unity 添加,修改默认创建脚本模板

Unity 默认创建的脚本可以添加也可以修改&#xff0c;不需要修改Editor。 一、找到模板目录 \Editor\Data\Resources\ScriptTemplates 二、如果要修改模板&#xff0c;直接打开修改就可以了&#xff0c;每个模板都是可以修改的。 修改默认unity创建的脚本&#xff1a; 三、如…

Unity编辑器VS的脚本模板(Script Templates)设置

最近在用Unity做小游戏玩儿时&#xff0c;经常需要用到添加一些整体的说明或者相关系列脚本开发的功能&#xff0c;每一次都需要去手动的敲一下题头说明&#xff0c;虽然也只是从一个脚本copy题头过来修改&#xff0c;但是也是挺麻烦的&#xff0c;做的只是无用功重复&#xff…

unity修改脚本模板

文章目录 前言 前言 在unity有时候创建脚本的时候&#xff0c;会频繁加一些命名空间或者要继承基类并且重写方法&#xff0c;在这里记录一下&#xff0c;修改一下创建脚本时默认模板。 打开安装的unity&#xff0c; 将 81-C# Script-NewBehaviourScript.cs 移动到桌面 使用VS打…

Unity 自定义脚本模板

找到模板 C:\Program Files\Unity\Editor\Data\Resources\ScriptTemplates修改模板 将自己想要自定义模板的原版复制一个副本&#xff0c;并自定义名称 80&#xff1a;序号&#xff1b;Tmz Script&#xff1a;一级列表中的名称&#xff1b;NewTmzScript&#xff1a;新建出来…

pygame安装成功了但却无法导入求大神解

setting里面也设置成功使用了 就是无法导入 有懂得大神指导一下吗 2.8 后面发现是版本不兼容导致的

Pygame下载和安装

Pygame 的下载非常简单&#xff0c;可分为两种方式&#xff1a;一是通过 Python 的包管理器 pip 来安装&#xff1b;二是下载二进制安装包进行安装。其中使用 pip 包管理器安装是最简单、最轻量级的方法&#xff0c;下面以 Windows 系统为例对上述两种方式进行讲解。 图1&#…

pip install pygame安装报错解决方案

针对pip install pygame安装报错的两种不同的解决方法&#xff1a; 一&#xff1a;若python中已经安装好了pip&#xff0c;但pip install pygame却报错的话&#xff0c;可以尝试以下步骤&#xff1a; &#xff08;1&#xff09;开始&#xff0c;输入cmd &#xff08;2&#…

Pygame安装心得

Pygame安装 想必很多人都是从《Python编程&#xff1a;从入门到实践》来的&#xff0c;第一次安装Pygame&#xff0c;我也一样。现在我来谈谈我的安装心得。我的系统是win10。 打开CMD 键盘winR打开运行界面&#xff0c;输入cmd&#xff0c;回车。 &#xff08;这个黑东西…

pygame的安装

默认python和pip已经安装好了 1、去官网下载pygame 我使用的是py3.8&#xff0c;所以选择cp38。里面包括ios、linux和windows&#xff0c;注意选择64/32位。 2、将pygame复制到项目所在的文件夹中&#xff0c;如图&#xff1a; 3、单击选中include文件夹&#xff0c;按住shi…

python安装pygame教程_python-pygame安装教程

安装好python后&#xff0c;配置环境变量。 安装pygame需要先配置两个环境变量。 第一个是python的。先打开计算机&#xff0c;然后点击‘系统属性’然后点击‘高级系统设置’然后点击‘环境变量’在系统变量中找到path选择并编辑在末尾添加“;”号来作为与前面的间隔。我将p…

pygame 安装方法

本人python初学者&#xff0c;在各种找教程和尝试之后整理pygame 安装方法 说明&#xff1a; 使用系统&#xff1a;Windows 10 64位 python 版本&#xff1a;python 3.8 python安装位置&#xff1a;G:\Python38 以上信息请根据你所使用的电脑有所区别 查询升级pip 版本 pip l…

Pygame 安装教程

实验周用 Python 写个小游戏&#xff0c;需要用到 Pygame &#xff0c;记录一下安装过程。 一、下载文件 先去官网下载文件。我选的是 Pygame1.9 版本&#xff0c;因为去图书馆借了本书&#xff0c;是按照 Pygame1.9 版本进行讲解的&#xff0c;如果用 Pygame2.X &#xff0c;…

Pygame安装方法(Windows10, Python-3.7.2)

第一部分: 安装Pygame Pygame是一个开源游戏框架, 一组有趣强大的库, 但是, 很多人看到代码后复制下来却看到了报错 ModuleNotFoundError: No module named "pygame". 这是一个常见的问题, 表明你没有安装Pygame. 安装教程: 首先按住Win r键, 调出运行. 输入 c…

python之pygame安装教程_Pygame安装教程

1、python --version 查看安装的Python版本&#xff0c; pip --version 查看安装的pip版本&#xff0c; 升级pip命令&#xff1a; python -m pip install --upgrade pip 如果已经下载了安装文件就使用&#xff1a;pip install 文件名 如果没有下载就使用&#xff1a;python -…

python安装pygame教程_pygame 安装教程

步骤&#xff1a; 1.去官网下载PyGame 注意&#xff1a;要下载对应版本的包 其中&#xff0c;如果python为以下版本&#xff1a; &#xff08;cp36就是python3.6的意思&#xff09; 2. .exe文件直接安装 .whl文件启动doc命令安装&#xff1a; 在文件所在位置打开doc界面…

python中的pygame安装不成功

如果是新手会在安装pygame安装的过程中&#xff0c;出现奇奇怪怪的问题&#xff0c; 现在我们就开始说一下pygame的安装过程以及出现的问题 1、我们先检查是否成功安装了python 输入如下代码我们就可以获取python的版本&#xff0c;图中成功显示版本号 python 但是显示版本…

pygame安装(超级详细)

安装时是需要设置python环境变量的&#xff0c;下载python的时候底下有个小框框&#xff08;没有默认选中&#xff09; Add Python 3.7 to PATH需要选择的&#xff0c;如果没有选择的话&#xff0c;需要自己设置&#xff0c;我一般比较懒&#xff0c;卸载了python重新下载的&a…

pygame安装超详细讲解

1.进入python官网:https://www.python.org/ 2.点击PyPI 3.输入框输入pygame 4.根据顺序依次点击 5.根据自己python版本号选择对应的文件 6.把下载的whl文件放在python的对应目录下 7.回到上一级目录&#xff0c;按住shift然后鼠标点击右键&#xff0c;打开windowsPowerSh…