- 博客(61)
- 资源 (6)
- 收藏
- 关注
原创 按下F12快速跳转到gameObject所在的代码行
当我们选中gameObject的时候,通常来说在上层的cs脚本中可能就定义了这个变量,我们的ui代码是自动生成的通常结点是 变量名@变量类型,或者是那种m_go类似这种,所以我们可以轻易从结点中拿到变量的类型,然后我们可以获取父结点以上的所有cs脚本,然后通过逐行遍历 正则匹配 +模糊匹配来锁定最终的cs文件。Debug.Log("AssetDatabase.FindAssets耗时分析begin : " + Time.realtimeSinceStartup);//匹配 结点名@类型名 中的 结点名@
2025-02-19 15:30:06
786
原创 点击unity资源文件自动展开左侧的文件路径
最近从cocos那边转过来的unity同事总是吐糟我们unity选中一个资源后都无法清晰的看到他的文件路径,这给他的工作带来了很多的烦恼,于是我想到昨天刚看到一个unity编辑器下的简易协程实现,通过2个接口Selection.activeObject = selectedObject;可以实现选中一个目标资源并且跳转到该资源,于是我们可以先选中文件的文件夹,然后协程等待一帧然后选中并跳转到选中文件。//unity编辑下模拟协程。// 获取当前选中的资源。// 获取资源所在的目录。// 获取资源的路径。
2025-02-19 15:23:51
961
原创 unity优化webgl下的textMeshPro字体大小
成果:优化前2.5M的字体文件优化后只有几百kb不到1m了背景:unity微信小游戏要求字体文件在3m以内姑且我认为2.5m以内实际可以干到1M以内。微信小游戏要求尽可能的进游戏快,在这个背景下我们需要对字体进行优化,我采用的是3500字的常见中文,一些符号它没有包含进去所以用了一个FallbackLIst字体库(很小)另外参考博客。
2024-11-06 20:21:31
1241
原创 获取unity中prefab的中文文本内容以及和prefab有关的问题
背景1:经常会在开发中遇到策划需要改某个界面,但是我们不知道那是什么界面,只看到一些关键字比如圣诞活动,那这样我就可以轻易找到这个预设了。背景1代码如下:我写了2个接口一个是获取\uxxxx的文本内容 一个是获取Text组件上文本内容,大家可以根据需要选用接口。我不打算用unity的api来做主要是想做一个外部工具,用unity的工具有它的局限性。背景3:每次自己构建的text或者image组件总是会带一个rayCasttarget= true的属性,如果不影响事件应该处理为false。
2024-09-30 14:54:37
1103
1
原创 unity一键注释日志和反注释日志
1.先检测代码中是否存在不规范代码,类似if(a > 1) Debug.Log("11") 这种代码如果注释掉日志会引起业务逻辑问题需要先找出来,类似的不限于if else for foreach while这些 所以尽可能的要做这个检测,有这类问题直接报错。2.注释Debug.Log或者UnityEngine.Debug.Log,但是有一个问题就是注释之后再注释的问题,所以在调用这个接口前需要调用反注释然后调用注释,这样就可以保证注释是没有问题的。Log($"请使用括号封装你的日志!
2024-09-30 14:30:57
1168
2
原创 批量处理图集SpriteAltas,关闭它的可读写属性
一些小的游戏工作室或者项目,他们的编码输出能力往往还可以,但是细节有一些欠缺,刚来到一个项目组发现了很多问题,比如便利list容器,c#中其实也就是数组,它居然不是倒序去处理的,你要知道那很容易出错的。通常来说都是倒序便利更加安全可靠。// 暂时不动padding参数。[MenuItem("Assets/右键工具/批量去掉图集的读写属性")]处理之后 内存占用 显存占用都会降低。cpu gpu的性能都会有所提升。// 获取当前的纹理设置。// 设置新的纹理设置。// 标记资源为已修改。
2024-08-21 19:17:37
328
1
原创 反射UnityEditor.GameView设置GamePlayMode分辨率
/找到 构造方法 public GameViewSize(GameViewSizeType type, int width, int height, string baseText)int count = (int)getCustomCount.Invoke(curGroup, null);// 获取索引x的分辨率。// //执行 添加到 group 中 GameViewSizeType m_SizeType;//获取 GameViewSizeGroup。// //获取enum中的类型。
2024-01-06 15:43:02
1546
原创 unity一种日志过滤的思路
unity打印日志的函数Debug.Log但是这样会有一个问题,某些c#打印过于频繁 ,我作为一个开发者不关心他的模块日志。但是我没办法去给他把日志删除了,这样没有道德。于是想着写这样个工具,它不太完美 ,它只能指定我们需要那些cs文件的日志 整体它长这样比如我现在调试角色的跳跃,角色的跳跃是个很复杂的过程,有起跳阶段,上升阶段1 2 3 ,最高阶段 ,下落阶段123 落体阶段等等等等 这里面相关的参数很多,需要很多判定,需要看日志如下图就是看移动组件的日志 。上面filter是一个list 我
2022-03-21 17:34:19
3527
原创 游戏开发中如何设计一个撤销重做系统DoUnDo
我现在负责做捏脸的模块,其中需要做撤销重做,老实说上一次做还是大学的时候做绘图程序有用到过,那个时候就是简单用了一个栈来操作。当时的一个核心思想是不管你绘制的是矩形、三角形、还是什么形状,底层他们都有一个基类叫图元。基于这种联想我开发出了一个实际游戏工程中用到的撤回重做系统。 我们不记录复杂的操作,复杂的操作留给系统内部cpu去计算,我们只是记录简单的数据越少越好,当然需要保证逻辑正确。这种系统还可以联想到某些游戏中的时间回流的做法。所有的需要被DoUnDo的操作 比如一个点击 我们可以new一个对象,
2022-03-21 17:26:43
3552
原创 DoTween的DoKill可能的坑点梳理
现在游戏中都是尽量复用对象,后者会导致复用的对象状态还是之前的状态。DoTween的onComplete回调会立即执行 。为了保险起见建议使用前者 参数传false 已经实践transform.DOKill(false);transform.DOKill(true);...
2022-01-28 19:15:01
4944
原创 未知轴的四元数变换问题从a到b以及从b到a
最近在做捏脸查了很多资料大概有思路了,已知animator改变骨骼的transform是在update阶段故此留给我们的大概只有lateudpate中去修改骨骼的transform 。比如骨骼捏脸我们设置了一个旋转四元数,animator对骨骼施加了另外一个四元数 。那么我们要做的就是求出来模型静止的时候ab变换的那个t四元数。怎么求t呢 t * a = b 利用这个公式。四元数和矩阵的运算类似这里 t = b * a-1 (a-1是a的逆 ) 假设animatro将物体改变到c 那么我...
2022-01-24 21:22:23
2581
原创 解决button阻挡scrllrect滑动的问题
using UnityEngine;using UnityEngine.UI;using UnityEngine.EventSystems;using UnityEngine.Events;namespace rkt{ public class DragItem : MonoBehaviour, IBeginDragHandler, IEndDragHandler, IDragHandler,IDropHandler { [Header("要拖动的ScrollR...
2022-01-19 20:03:09
2098
原创 可回收特效拖尾组件TrailRenderer轨迹折线问题
美术特效经常会挂上拖尾组件以让一个飞行子弹或者飞行特效更加炫酷,因为我们的特效是可回收的,也就是说子弹在销毁的时候不是真的销毁是被我们放置到了很远的地方 比如10000,0,0。下次子弹生成的时候会被强行设置过来导致显示上存在一些问题。在子弹回收的时候设置清空trileRender组件数据for(int i = 0; trailRenderList != null && i < trailRenderList.Count; i++) { i...
2021-11-29 10:24:57
3518
原创 A追B如何计算子弹的飞行轨迹
假定有这么一个需求 A是我方B是敌方,现在A需要曲线追B ,万剑归宗大家应该都见识过,这些飞剑飞向目标并不是直线它有一段曲线的过程,那这个过程是如何做到的。这里s为速度方向,我们想办法推出他的公式。这个θ是相对角。因为一开始我们去配置这样一个轨迹的时候 我们粗暴的认为AB这条线就是正x轴。 不过实际游戏中AB这条轴是任意的向量,但是θ和他们的初始夹角却是一样的,如图θ是正的,这一点可以通过向量乘法去得到(向量的坐标表达式)我们需要得到s离不开AB 这里AB可以轻易算出来就是TargetDi...
2021-11-19 21:03:41
4719
原创 简单数组算法分享
1.算法来源于生活,来源于工程实际。我在2d游戏开发中遇到一个需要发射扇形区域的散射弹角度是+120 到-120之前 这个区域可能有12个子弹。我在计算的时候是从+120计算到-120 也就是数组是a【0】 = 120 a【11】 = -120 。 注意正角度在x轴上方 负角度在下方,这个通过向量的乘法来判断(用坐标表达式计算) 类似数组12345 要变为32415 下面的函数就是干这个事情 注意数组是引用类型。public static void CenterFloatArray(float[..
2021-11-19 20:46:06
3039
原创 unity粒子系统设置粒子的长度,旋转等
我这里全都是实践干货。粒子系统参数众多比较复杂。我在项目里面也有写粒子发生器但是绝对没有unity搞得那么复杂。分析策划需求,策划希望可以控制粒子的长短,比如需要将粒子设置为15个单元的长度定义length = 15关键在于设置ParticleSystemRenderer的lengthScale属性main = 粒子的main属性length =(transform.localscale.x* main.startSize.constant) *ParticleSystemR...
2021-09-03 22:31:06
4081
原创 八叉树unity实现
using System;using System.Collections.Generic;using System.Linq;using System.Text;using UnityEngine;//定义一个八叉树 二叉树对应于一维得数组(参考满二叉树)// 那么 四叉树 对应于 二维得数组 八叉树显然对应于三维数组// 因此我们也从1维世界转到2维世界最后来到三维.public class OcTree{ //程序需要定义一个最小的空间半径 下面的值可以自己指定(通过读...
2021-09-01 17:56:29
1132
原创 unity3d编辑器拖拽创建可拖拽赋值的TextField
SDDynamicFlySwardEmiter.cs类中会去定义pathList以及prefabPathusing UnityEngine;using UnityEditor;using System.Collections.Generic;using rkt;[CustomEditor(typeof(SDDynamicFlySwardEmiter))]public class SDDynamicFlySwardEmiterEditor : Editor{ SDDy...
2021-09-01 09:46:06
741
原创 从数组中找出第n大的数
基本思路就是随便找一个数,遍历数组,比这个数大的那么放到这个数的左边,比这个数小的放在这个数的右边。如果左边的数+1 == 这个n 那么当前这个数就是我们需要返回的,否则遍历左侧或者右侧的数组,条件是 如果左边的数很少,比如只有1个 ,你需要得到第3大的数,明显需要遍历右侧,否则就遍历左侧 。如此递归进行public static class Util{ public static int INVALID_INT_VALUE = 1 << 31;...
2021-08-24 22:55:47
1089
原创 不使用递归算法找结点||组件
Transform FindComponent(Transform parent,string name) { Stack<Transform> tmpStack = new Stack<Transform>(); tmpStack.Push(parent); while(tmpStack.Count > 0 ) { var nextTransform = tmpStack.Pop...
2021-08-24 22:40:20
96
原创 unity ugui toggle组件的坑
退出一个界面,然后在打开界面,需要重置为选择第一个标签页。但是经常你会发现当你设置对应的页签isOn= true的时候不触发事件(界面SetActive为true的时候toggle内部会自动设置一下isOn )。所以这里在我们界面OnEnable的时候 lua那边建议封装类似的函数 处理一下相关的逻辑 先将所有的isOn设置为false然后将对应的页签设置为true从而触发逻辑。...
2021-08-17 09:53:52
1036
原创 2021年7月10日如何构建一个简单的trigger系统
我在工作中经常看到别人写trigger,我自己一直很想写,由于工作的原因写了一个最简单的,这个trigger还不包括triggercondition 我这里没有条件分支,只有节点逻辑,这个东西也是以后需要扩展的。triggerview.cs脚本(可以挂在gameObject上先选择一个触发类型,然后点+然后填写相关的参数 然后在你的脚本中通常和triggerview在同一个节点上或者同一个节点数上去触发trigger,至于什么时候触发那是逻辑的事情) triggersystem.cs脚本 (在trig.
2021-07-10 19:54:01
348
原创 2021-05-25开发2D特效遇到Quaternion.LookRotation使用的坑
最近写一个飞剑的特效,遇到了坑,以前写特效的时候可能是因为轴向正好对上了没有遇到啥坑。这里记录一下。如下图所示 右边世界是正x轴 上边世界是正y轴 屏幕里为正z轴蓝色的轴表示飞剑的forward 红色的为飞剑的right 绿色的是飞剑的up我们的飞剑需要走一个xy平面的曲线运动路线,所以这里应该是沿着z轴去旋转,如果是顺时针转动那么是负角度,否则是正角度,首先声明这点(正负不清楚的可以取查阅其他资料,比如左右定则,或者向量的叉乘)。这样的问题就是 我们看上去的前向方向是up方向向量,这就...
2021-05-25 19:54:54
504
原创 c#写log到文件
using System;using System.Collections.Generic;using System.IO;namespace rkt{ public class LogToFile { public static string LogFolderPath { get { return logFile; } ...
2021-04-09 12:22:34
384
原创 给单个预制体批量设置sprite为内置的uimask精灵
public class ToolSet{public static GameObject GetSelGameObjectInHierarchy() { return Selection.activeGameObject; }}[MenuItem("GameObject/一键设置uimask", priority = 0)] static void CreateEffect() { var go = ToolSet.GetSe...
2021-04-09 12:18:08
155
原创 对unity结点进行显示处理打标记,显示孩子结点数量
#if UNITY_EDITORusing UnityEngine;using UnityEditor;using System;[InitializeOnLoad] //Unity启动的时候执行编辑器的脚本 需要静态的构造函数static class DrawIcon{ static Texture2D icon; //静态的构造函数 static DrawIcon() { callback(); } private s...
2021-03-23 11:51:32
236
原创 untiy Hierarchy面板的Node结点标识方便开发
/** http://www.manew.com/thread-102160-1-1.html 游戏蛮牛*/#if UNITY_EDITORusing UnityEngine;using UnityEditor;using System;[InitializeOnLoad] //Unity启动的时候执行编辑器的脚本 需要静态的构造函数static class DrawIcon{ static Texture2D icon; //静态的构造函数 static...
2021-03-23 11:26:59
192
原创 游戏主相机和unity编辑器相机同步变化
打开unity 切换到场景视图 你会发现这里是存在一个unity 编辑器相机的 这应该是引擎内置的相机 那么我们的引用层相机(游戏主相机)如何跟随这个场景相机呢(比如我们按wsad 原本只是unity 编辑器相机发生变换,现在要求游戏主相机也跟随变动) 下面就是具体实现代码1 编辑器类using UnityEngine;using System.Collections;using UnityEditor;[CustomEditor(typeof(AlignToEdito...
2021-03-23 11:21:10
608
转载 unity vs工程打不开项目属性的解决办法
转 https://blog.youkuaiyun.com/qq_38640682/article/details/86627178?utm_medium=distribute.pc_relevant_t0.none-task-blog-OPENSEARCH-1.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-OPENSEARCH-1.controlunity vs工程打不开项.
2021-03-04 15:34:50
1098
1
转载 unity vs工程无法打开属性
VS 项目没有“添加引用”选项出问题的环境:vs2017,unity2017unity创建工程后,vs打开项目后,无法添加引用dll,没有“添加引用”项原因:需要把目标框架改为.
2021-03-04 15:27:19
194
1
原创 unity 智能tips组件UITipPos
unity 智能tips组件UITipPos代码看下面,写了很多注释。 只需要新建一个场景或者在已有的游戏场景中(一般都有ui) 在canvas主ui画布下,新建一个image 然后给image添加上这个组件 然后设置这些参数运行游戏,左键触摸屏幕就可以看到效果了。 如果需要知道细节你需要查看源代码using UnityEngine;using UnityEngine.UI;#if UNITY_EDITORusing UnityEditor;#endifnamespace r..
2021-01-06 22:05:26
739
原创 RectAToB组件
RectAToB组件在游戏开发中经常中经常会有这样的需求,需要一个tips界面在某个图标的旁边显示。于是我写了一个RectAToB 方法 以下是全部c#代码 需要的同学可以改一改需要特别注意的是某些tips界面如果是生成后会动态调整大小的,可能需要你延后一帧去处理逻辑,避免位置偏差。using Unity...
2021-01-06 22:00:03
195
原创 DragImage拖拽赋值组件
DragImage拖拽赋值组件游戏中的拖拽组件、拖拽类。 游戏开发中经常需要拖拽一个图标来完成赋值操作,比如我们游戏就需要拖拽技能图标到一个孔位上实现技能的装配重要的3个方法DragIn(拖自己) DragOut(被别人拖) DragSus (拖拽成功后做的表现,不做逻辑)主要就是想把几个阶段分出来,同时做...
2020-11-14 16:57:50
864
原创 winform的双缓冲绘图
如果在使用双缓冲的过程中有一些疑问可以参考这个帖子https://bbs.youkuaiyun.com/topics/390673684/他的问题问的非常好,解决了我心中的一些疑惑。 另外写winform的gdi的代码可以参考一本书上的代码《GDI+图形程序设计》书中有一个项目GDIPainter很多人应该都熟悉win32的双缓冲,但是c#的却比较诡异。比如这段代码//绘图完毕 都应该调用这段代码。...
2019-11-19 09:51:14
496
原创 c++ log到文件存盘,方便阅读
0.这是我2年前做的一个程序,可以生成log,每一个log文件都是后缀data_ 具体后缀你可以传参自己决定。使用方式大概是这样下面2行声明为全局变量//FileWriteManager fwm("d:\\svn\\design_csmj\\策划文档_club\\study\\炮弹击杀分析\\data_");//FileWriteManager fwm2("d:\\svn\\de...
2019-09-27 09:42:54
712
原创 unity Animator动画 如何快速过渡
发现美术做的很多动画都比较拖沓,从生成一个模型开始到他真正跑起来往往需要很久很久,导致体验非常糟糕。首先需要去掉ExitTime,其次展开Settings,把这个过渡时间设置短点我这里是0.11 。 设置成0那下面这个时间轴就没了。最后调整这个时间轴,unity这个ui着实让我经常猜功能,把ready动画拉到0这个位置,然后那个过渡的斜面表示动画的过渡,从静止到跑,总还是要过渡的,我们让这...
2019-09-26 17:08:26
3218
原创 unity摄像机镜头平滑处理
我这个摄像机是跟随角色,且角色朝向某个方向,镜头也会做相应的调整,我看网上大部分估计66%左右只是设置镜头和角色之间的offset,并没有考虑角色可能一直在寻找敌人,攻击敌人或者跑向敌人的时候,他们没有去考虑摄像机是否转向的问题using UnityEngine;namespace XX.Battle // 这里命名空间隐藏掉 ,xx你可以自己替换你想要的{ public cla...
2019-09-26 16:26:54
1730
原创 转圈算法
在斗牛游戏中,有一个抢庄的阶段。会有一个亮框周期性循环转的效果,最终转到抢到庄家的那个人头像上。我要实现这个功能,假定整个动画过程就是3秒,没一个框亮后再灭持续时间是0.1秒。现在比如说有4个人都抢了4倍。那就是1234 1234 1234 不停的转动知道转到庄家位置比如3. 如果都是0.1秒按序执行的话就是转30次动画就结束了,怎么保证最后一次恰好落在庄家的位置上?可以假想一下,
2017-10-15 18:37:05
561
原创 c++尝试写一个代理类
#include using namespace std;//运算符重载//class A//{//public:// A(){}// A(double a1)// {// m_a = a1; // }// virtual ~A(){ cout // //~A(){ cout // double getA() const { re
2017-07-03 16:18:12
245
自动设置导入资源的纹理类型和图集tag.unitypackage
2020-05-11
unity第三人称相机实现
2019-03-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人