
工具
文章平均质量分 53
萧然CS
喜欢玩游戏,更喜欢做游戏
展开
-
【Unity Editor】使用AssetDatabase.GetDependencies查看/搜索所有资源引用详情(升级版)
查看所有资源的被引用关系,按文件后缀名分类,可以按名字搜索,查看被引用详情。可以选择只查看直接引用(直接依赖关系),也可以查看递归引用(间接依赖关系)查看所有资源的引用关系,可以按名字搜索,查看引用详情。查看某个文件引用的所有资源。查看某个资源的被引用关系。原创 2022-09-09 19:55:25 · 2182 阅读 · 4 评论 -
【Unity】升级版·Excel数据解析,自动创建对应C#类,自动创建ScriptableObject生成类,自动序列化Asset文件
Excel注释操作:行数据类,对应每一行数据:完整数据类,包含所有行的数据、初始化函数、Get函数:目前支持的数据结构: 字符串 testString 字符串数组 testStringArray 字符串二维数组 testStringArray2 Int testInt Int数组 testIntArray Int二维数组 testIntArray2 Float testFlo原创 2022-07-05 20:53:27 · 3025 阅读 · 5 评论 -
【UnityEditor】使用AssetDatabase.GetDependencies分析资源引用关系
主要有四个功能模块:查找引用方:查看给定Prefab引用的所有资源 查找被引用方:查看引用给定资源的所有Prefab 引用关系:浏览所有Prefab的引用关系 被引用关系:浏览所有资源的被引用关系原创 2022-01-21 17:28:22 · 2896 阅读 · 0 评论 -
【UnityEditor】通过PrefabStage监听打开/关闭Prefab编辑场景事件,通过PrefabStageUtility获取当前正在编辑的Prefab
Editor下,通过PrefabStage监听打开/关闭Prefab编辑场景事件,通过PrefabStageUtility获取当前正在编辑的Prefabusing UnityEngine;using UnityEditor;using UnityEditor.Experimental.SceneManagement;public class LevelPrefabSceneExtension{ [InitializeOnLoadMethod] public stati...原创 2021-09-08 18:46:09 · 4288 阅读 · 2 评论 -
【UnityEditor】获取工程内所有Missing丢失引用的物体,并一键移除Missing
1. 打开Editor面板可能耗时较长,取决于项目内文件数量多少2. 清除无效脚本(Missing)可能耗时较长,取决于Missing的数量多少using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEditor;using System.IO;namespace SimpleFrame.Tool{ public class MissingScriptsT..原创 2021-09-08 18:30:23 · 2300 阅读 · 0 评论 -
【UnityEditor】使用Selection在Project面板自动选中文件、文件夹
选中文件夹选中文件示例: //选中文件夹 //OpenPrefabPath("Assets"); //选中文件 //OpenPrefabPath("Assets/Cube.prefab"); void OpenPrefabPath(string selectPath) { //加载想要选中的文件/文件夹 Object obj = UnityEditor.AssetDatabase.LoadAssetAtP.原创 2021-09-08 17:04:39 · 3951 阅读 · 4 评论 -
【UnityEditor】创建并保存 Texture图片、Mesh网格
创建保存Texture: private void CreateSampleSprite() { int minRadius = 64; int maxRadius = 128; //图片尺寸 int spriteSize = maxRadius * 2; //创建Texture2D Texture2D texture2D = new Texture2D(spriteSize,sprite.原创 2021-08-30 19:27:09 · 6789 阅读 · 2 评论 -
【UnityEditor】查看模型Mesh面数/顶点数
去掉GUI字体的三角面数,统计到的数据与Unity面板显示一致。Unity默认天空盒有大约1.7k三角面,5k顶点,如果使用了天空盒,需要额外注意。#if UNITY_EDITORusing System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEditor;public class CalculateMeshTris : MonoBehaviou...原创 2021-07-16 19:59:59 · 15729 阅读 · 7 评论 -
【Unity】基于UnityWebRequest简单封装Http的Get/Put/Post
HttpManager,统一对外接口using System.Collections.Generic;using System;using System.Text;//GET请求会向服务器发送索取数据的请求,从而获取信息。只是用来查询数据,不会修改、增加数据,无论进行多少次操作结果一样。//PUT请求是向服务器发送数据的,从而改变信息。用来修改数据的内容,但不会增加数据的种类,无论进行多少次操作结果一样。//POST请求同PUT请求类似,向服务器发送数据。但是会改变数据的种类等资源,会创.原创 2021-05-29 16:34:00 · 2944 阅读 · 5 评论 -
【Unity】自定义[Attribute]特性标记
继承Attribute,自定义特性类using System;public class HttpApiKey : Attribute{ public HttpApiKey(string _httpApi) { httpApi = _httpApi; } public string httpApi;}使用示例public class HttpId{ //示例,给id标记api [HttpApiKey("Register".原创 2021-05-29 16:12:55 · 1525 阅读 · 1 评论 -
【UnityEditor】Undo撤销编辑器下的操作,如撤销创建/销毁的物体
编辑器下的一些操作默认是不可撤销的,如创建、销毁物体,使用Undo可以将某个操作标记为可撤销操作,Ctrl+Z即可撤销实例:using UnityEngine;using UnityEditor;public class TestUndoEditorWindow{ [InitializeOnLoadMethod] public static void Init() { SceneView.duringSceneGui += DuringSce.原创 2020-12-16 15:13:07 · 2470 阅读 · 0 评论 -
【UnityEditor】在Editor编辑器下自动编辑Prefab预制体并另存为,可批量编辑
1. 在场景中实例化Prefab public GameObject LoadPrefabToScene(string loadPath,string prefabName) { //加载路径 string loadFullPathName = string.Format("{0}/{1}.prefab",loadPath,prefabName); //加载预制体 GameObject prefabSource = Asse原创 2020-12-09 11:18:55 · 3318 阅读 · 0 评论 -
【Unity】Editor下批量修改UI Prefab字体
一般情况UI界面都是动态加载到场景,一键对UI Prefab批量修改字体,如果要修改字号、字体格式或者对齐方式等Text组件的其他操作,可以根据需求继续扩展。操作一:在面板中选中需要修改Text组件的预设体,打开"MyTools/Change Font"工具下的"Change Font By Select"面板,选择目标字体,"Change Selection Font"确认修改即可。操作二:替换字体,选择被替换的字体,查找,然后指定目标字体,"Change Selection Font原创 2020-06-19 16:54:24 · 1337 阅读 · 0 评论 -
【Unity】利用富文本给文字动态添加颜色
首先要确保Test组件色RichText是开启的把颜色转换为16进制字符串,然后添加到富文本,最后显示到Text组件 public static string AddColor(string str, Color color) { return string.Format("<color=#{0}>{1}</color>", ColorUtility.ToHtmlStringRGBA(color), str); }...原创 2020-05-20 12:31:34 · 5752 阅读 · 0 评论 -
【Unity】编辑器下动态创建ScriptableObject的Asset文件,并给字段赋值
using System.Collections;using System.Collections.Generic;using UnityEngine;using System.IO;#if UNITY_EDITORusing UnityEditor;public class ScriptableObjectTest{ //Asset文件保存路径 private const string assetPath = "Assets/Resources/Asset/"; .原创 2020-05-17 17:33:37 · 4427 阅读 · 1 评论 -
【Unity】编辑器环境下获取Prefab修改设置
private static List<GameObject> GetPrefabs() { List<GameObject> prefabList = new List<GameObject>(); ////获取场景所有物体 ////GameObj...原创 2020-05-04 22:27:10 · 3363 阅读 · 0 评论 -
【Unity】解析Excel数据,自动创建对应的C#类,创建ScriptableObject的Asset文件并序列化
解析流程:1. 配置Excel2. 读取解析Excel3. 整理解析到的数据4. 自动创建对应的C#类,继承ScriptableObject,声明变量,保存.cs文件5. 自动创建ScriptableObject的Asset文件,并赋值,保存Asset文件6. 在游戏直接使用ScriptableObject类优点:1. 每个Excel对应一个类,使用灵活,对Exce.........原创 2020-04-18 23:31:27 · 3101 阅读 · 5 评论 -
【Unity】使用 [xxx] 标记类和方法
代码中很方便的 [xxx] 标记,比如工作中最常用的[SerializeField]等,还有扩展编辑器、自定义工具窗口,都需要用到[xxx]标记,网上可以搜到非常多且详细的介绍说明,比如:Unity常用[xxx]用法 特性(https://blog.youkuaiyun.com/FifthGently/article/details/78363364),整理的非常齐全而且简单明了,需要的童鞋们可以百...原创 2018-10-27 16:27:00 · 737 阅读 · 0 评论 -
【Unity】关于ScreenCapture.CaptureScreenshot截屏的尝试
利用Unity提供函数"ScreenCapture"可以屏幕截取,不过只能截全屏,不区分层级,屏幕内显示的会全部截取下来,与手机截屏功能比较类似,实用性不大 ···下面是一组简单测试的数据: //屏幕尺寸: 720*1280 //保存截图到本地 //ScreenCapture.CaptureScreenshot(截屏图片保存路径); ...原创 2019-12-20 18:12:42 · 9999 阅读 · 0 评论 -
【Unity】绘制阿基米德螺旋线
阿基米德螺旋线公式: //极坐标方程为: r = a + bθ //平面笛卡尔坐标方程式为: x = (a + bθ)cos(θ), y = (a + bθ)sin(θ) //a: 当θ=0°时的极径(mm) //b: 阿基米德螺旋线系数(mm/°),表示每旋转1度时极径的增加/减小量 //θ: 极角,单位为度,表示阿基米德螺旋线转过的总度数(弧度)......原创 2019-11-14 11:45:25 · 27451 阅读 · 3 评论 -
通用的FSM有限状态机(状态管理,可实现NPC简单AI)
在角色状态较多,状态之间切换关系复杂时,简单的使用if...else...和switch...case...已经满足不了需求了,不仅代码结构很乱,难以扩展,别人看起来也会很费劲,这时候就需要FSM有限状态机,清晰方便的实现多状态管理参考:unity3D FSM有限状态机(状态设计模式)一个通用的有限状态机(FSM)框架状态机结构示意图:首先要拆分角色状态,列成枚举...原创 2019-11-13 16:44:09 · 1115 阅读 · 0 评论 -
【Unity】解析Excel数据,并自动创建对应的C#类
参考:Unity C#配置表工具解析流程:1. 配置Excel2. 读取解析Excel (引用Excel.dll, ICSharpCode.SharpZipLib.dll)3. 重新整理解析到的数据4. 创建Excel对应的C#类,声明变量5. 在类的构建函数中给变量赋值6. 保存类文件,可在游戏直接使用优点:1. 每个Excel对应一个类,使用灵活......原创 2019-11-12 19:30:58 · 2906 阅读 · 0 评论 -
观察者模式及使用委托简化观察者
先说明一下观察者模式:观察者模式|菜鸟教程我用最简单的方式将原理实现了一下://被观察者父类,主要有Attach、Detach、Notify函数 //被观察者父类 public class Subject : MonoBehaviour { //记录注册的观察者 private List<Observer> observ...原创 2019-11-08 12:00:15 · 254 阅读 · 0 评论 -
【Unity】多方式批量修改Font属性
之前写过一个 一键替换场景、Prefab字体的工具,用于批量修改Font字体,不过只能一键修改全部字体,使用不方便,现在根据刚写过的 多方式批量修改Tag值 工具类,对Font重新写了一个操作窗口,用起来就方便多了,可以根据需求继续扩展~~//#if UNITY_EDITORusing System.Collections;using System.Collections.Gen...原创 2018-10-28 12:55:19 · 1521 阅读 · 0 评论 -
【Unity】多方式批量修改Tag值
本工具类主要功能:1. 批量添加、减少Tag值:2. 批量选择GameObject,修改Tag值(鼠标选中场景物体或Project面板的Prefab,然后打开该窗口)3. 查找标记任一Tag值的所有物体,批量修改Tag值代码都放在一个脚本里了,代码量略大,好在简短易懂,说明加在注释里了,这里就不过多说明啦,英文词汇量有限,变量名字比较随意 ··· ···//#...原创 2018-10-28 12:55:26 · 3496 阅读 · 1 评论 -
【Unity】替换场景、Prefab字体 工具类
在游戏中要逐一修改字体比较繁琐,而且容易遗漏,为了方便修改字体写了两个方法,这里只是替换字体,在此基础上可以给字体添加外边框等,如有需要可以继续扩充··· 此类是对字体的操作修改,也可以根据需求,对其他组件或功能进行操作,不仅限于Text~~#if UNITY_EDITORusing System.Collections;using System.Collections.Generi...原创 2018-08-15 20:08:14 · 843 阅读 · 0 评论 -
【Unity】场景所有Button添加点击事件
算是一个扩展,游戏中很多按键都会有点击音效,因为按键太多,如果每个按键都手动绑定或者代码绑定监听事件,都比较繁琐,而且容易遗漏。 我的做法是获取场景中所有的Button,统一添加监听事件不需要单独添加音效事件。 待实现功能: 1. 如果不同的按键有不同的点击音效,可以在命名上做一下区分,添加一个后缀,在统一添加监听事件时,根据不同的后缀名,来绑定不同事件。 2. 如果场景中按键较多,可以利...原创 2018-08-16 19:54:04 · 4182 阅读 · 2 评论 -
对象池(重复资源的循环利用)
在游戏里经常会用到重复资源,最常哪来举例的就是射击游戏中的子弹,像这样大量有共同特征的对象,就用一个容器来统一管理,需要的时候从容器里获取,销毁的时候也并不是真的Destroy,而是回收到容器里,如果容器中没有空闲对象,则创建,这样就可以避免大量的创建、销毁操作,实现代码的高效与低开销。 不同的项目中,可能会根据项目情况对对象池进行不同的优化或简化,不过原理都是一样。而且很多情况是一个项目中并不...原创 2018-08-21 21:16:30 · 1343 阅读 · 0 评论 -
【Unity】通用对象池
最近做一款音乐游戏,需要显示较多的音符,需频繁回收利用GameObject,简易的对象池满足不了需求,以前写过几个对象池, 使用起来有比较有局限性,不是很方便,就考虑写一个通用的对象池,可以适用于各种项目类型,而且调用要简便。参考了一些资料,并利用This添加了静态方法,方便调用,就此有了万能对象池~(大佬们看见不要打我 ···)使用前只需要创建一个池,加载对象到场景时调用创建方法,销毁时调...原创 2018-10-28 12:55:38 · 330 阅读 · 0 评论 -
【Unity】自动打包02工具类_Demo
通过最近的学习扩展一下自动打包的功能,重写了之前的代码,支持Windows和Mac打包Android和IOS(Xcode工程包),简直perfect~~这个自动打包只是一个Demo,简单的实现了出包功能,直接拿来用与手动也没多大区别,不过是少点几下鼠标,实际使用还要与开发流程相结合,设置条件,自动调用打包方法,自动出包~//自动打包部分:#if UNITY_EDITORusing ...原创 2018-10-28 12:55:53 · 460 阅读 · 0 评论 -
【Unity】扩展自定义类在Inspector面板的显示/在Inspector面板显示自定义类方法
一、简单一点的方法,给类方法添加 [ContextMenu("")] 标记,添加完成后,在Inspector面板的该脚本组件下,右键弹出菜单,可在编辑器环境调用该方法public class InspectorEditorTest : MonoBehaviour{ [SerializeField] string outPutStr; //在Inspector面板的...原创 2018-12-04 19:51:47 · 5655 阅读 · 0 评论 -
【Unity】控制台日志重定向及Debug封装
之前利用dll做过一次Debug的封装,后来在使用中感觉不是很方便,如果想要添加或修改封装脚本的代码,需要在改完之后重新生成dll文件。将Debug封装成dll https://blog.youkuaiyun.com/qq_39108767/article/details/83447769后来参考了两篇博文,利用控制台日志重定向重新做了一次封装:Unity日志工具——封装,跳转 http:/...原创 2018-10-27 17:02:28 · 1443 阅读 · 0 评论 -
【Unity】将Debug封装成dll
在开发过程中避免不了各种Debug调试,在打包的时候为了减少性能消耗,需要将所有的Debug注释或删除掉。如果再次调整则需要取消注释,来回折腾很是麻烦。之前尝试将Debug简单的封装到一个类,利用一个bool控制是否启用Debug功能,正常开发是只需将bool值设为true,打包时设为false即可,但这样就有了更大的一个问题,在控制台双击Log时,只能跳转到封装的Debug类里,不能定位到实际调...原创 2018-10-27 16:59:59 · 426 阅读 · 0 评论 -
【Unity】打包导出包体文件夹时 将指定文件(夹)自动拷贝到包体内
using UnityEngine;using UnityEditor;using UnityEditor.Callbacks;using System.IO;public class AfterBuildToDo : Editor{ [PostProcessBuild(1)] public static void AfterBuild(BuildTarget ta...原创 2018-12-29 16:27:14 · 2037 阅读 · 0 评论 -
【Unity】打包导出包体文件夹后 自动修改包体内文件文本数据
using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEditor;using UnityEditor.Callbacks;using System.IO;using System.Text.RegularExpressions;public class Adi...原创 2019-01-20 18:42:25 · 802 阅读 · 0 评论 -
【Unity】用PropertyDrawer自定义Inspector面板显示外观
举栗如图,将数组以二维矩阵的方式显示到Inspector面板using UnityEngine;using UnityEditor;[System.Serializable]public class InspectorGrid{ public int rows; public int columns; [SerializeField] bool...原创 2019-02-13 11:53:25 · 2339 阅读 · 0 评论 -
AES加密解密/本地文件读写/Json解析
关于数据加密,前段时间刚刚用过AES,这里就简单记录一下啦 大概思路就是: 1. 直接读取Json文件的数据,转换为二进制流 2. 对数据进行加密处理,得到加密后的二进制流 3. 将二进制文件保存到本地 4. 读取本地加密文件,进行解密操作 5. Json解析 (刚开始的做法,是把二进制文件转化为字符串,然后保存,在读取的时候出现了问题,报错存贮的和读取的字符串不一致,应该是中间数据...原创 2018-08-27 22:41:29 · 5675 阅读 · 0 评论