202201-16 Unity3D我目前采用的Shader优化方案 Unity的Shader绝对是个黑盒,困扰了很多开发者,我也陆陆续续被困扰了好久。首先我们需要知道Unity的Shader从编写到最终被GPU执行经历了什么? 编写Shader的时候我们用的是HLSL语言,在打包的时候会根据目标平台生成对应的着色器语言,如Android平台是GLSL,iOS平.... Read More >
202201-09 Unity3D研究院之UIToolkit运行时初探 UIToolkit使用了uxml来描述界面的布局,使用uss来制作不同样式,参考了web开发的xml和css方案。Unity2021已经将UIToolkit内置在引擎中,具有和UGUI同等地位。 比如要画一个按钮,对应的uxml [crayon-673f07b76076f452334902/.... Read More >
202111-25 Unity3D研究院之Image组件K特殊材质动画的一种方法(一百二十八) 有段时间没写东西了,最近有点小累啊。最近美术在K动画反映的问题,如果Image组件挂了新材质后,无法在Image上K材质中的效果。 使用MeshRenderer组件是可以K的,这里简单的给Image材质拓展了一个置灰的效果。如下图所示,MeshRenderer组件就可K材质动画。 .... Read More >
202109-11 URP打开半透明阴影(一百二十七) 在URP下默认只有不透明才会有阴影,其实可以使用alpha test给shadowmap上画阴影, 物体本身则使用alpha blend这样也更加合理。 首先拷贝一下默认的Lit.shader,在Properties中添加一个Toggle变量来控制是否开启半透明阴影。 [crayon-673.... Read More >
202106-07 Unity3D研究院之悬浮框显示其他游戏电流功耗(一百二十六) 在前面的文章中 Unity3D研究院之实时获取手机电流、电压、计算功率发热(一百一十八) 我们可以给自己的游戏添加电流功耗显示,但是有时需要对比其他游戏,看看到底是它发热还是自己的游戏发热。如果只是统计别人游戏帧率那么可以很方便使用腾通讯性能狗这样的工具,但是如果帧率在相等情况下就只能根据电.... Read More >
202104-28 Unity3D研究院之同步Scene与Game视图摄像机 Game视图同步Scene视图比较容易,直接获取Scene的摄像机坐标和旋转然后同步给Camera就可以。但是我想做的是Game视图运行时修改摄像机的位置,Scene视图来同步。 [crayon-673f07b764442824472494/] Unity给的一个解决方案是SceneView.A.... Read More >
202104-24 Unity3D研究院之更换着色器后删除材质残留宏和属性(一百二十五) Unity的材质有个隐患,当美术同学在切换shader的时候会造成上一个shader里的宏或者属性(如贴图)造成残留,未来在打assetbundle的时候就会造成冗余浪费,Unity这种设计可以更好的解决运行期进行shader的切换,但大部分材质是不需要这种需求的,所以需要一个方法来一键删除残留。 .... Read More >
202103-06 URP从原理到应用 今年春节又是个特殊的时期,我也响应政府号召就地在北京过的年。我以为北京过年期间是不能放烟花爆竹的,开始觉得除夕夜应该会很冷清,没想到除夕当天周围从晚上8点开始一直放到了12点(中间就没有间断过),后来才知道原来政府允许5环以外燃放烟花爆竹。 趁着这这股劲春节期间我将这一年URP的使用提炼总结出一份教.... Read More >
202102-28 Unity3D研究院之C#数据绑定 最近研究了一段时间MMVM的数据绑定,目前得出的结论单向绑定就已经够使用了,目前有2种方法实现数据绑定。 方法1 使用一个类代替基础数据 如下代码所示,我使用int32来代替int 数据,这样就可以监听数据绑定了。由于C#并没有提供"="符号的运算符重载,所以需要.value=xx 来触发数据变化事件,而其它计算,比较等都可使用运算符重载或隐式转换的方式。 [crayon-673f0.... Read More >
202102-06 Unity3D研究院之3D界面与2D界面的结合(一百二十四) 项目中已经全面采用3D与2D结合的方式来制作UI,3D界面的透视感会更强。但是有一部分UI还必须是不带透视的,所以需要采取正交与非正交摄像机结合的方式。3D界面有两种方式,第一种是需要进行屏幕自适应的,另一种不需要与屏幕自适应,我姑且把第一种称假3D界面,第二种称真3D界面。 假3D界.... Read More >
202012-29 Unity3D研究院之材质Shader Graph通用面板(一百二十三) 如果是自定义shader的通用面板可以看我之前的文章 Unity3D研究院之材质Shader通用面板(一百二十一) 这篇文章和它的原理是一样的。 首先shader graph有个很麻烦的问题就是自定义的keyword始终在面板的最下面不能和普通的属性进行排序,而且也无法展开分组的功能。为了实现.... Read More >
202012-28 Unity3D研究院之UI完整透下事件(一百二十二) 以前写过一篇类似的文章用于解决新手引导的问题, Unity3D研究院之将UI的点击事件渗透下去(九十) 最近策划又提出一个需求,Tips窗口打开以后点击空白区域关掉,但是如果空白区域下有按钮滑动输入一类的要关掉Tips的同时要响应相面的事件,所以透下的事件就要比较完整了。开始我觉得这个需求很不合.... Read More >
202012-22 Unity3D研究院之材质Shader通用面板(一百二十一) 技美在调shader的时候可能不太擅长C#编辑面板的代码,所以有了这篇文章。我封装了一个通用的着色器GUI面板,这样就可以不需要写C#代码了,实现的过程中试图解决了这几个问题。 1.视图解决分组面板展开与缩进 2.if标签与原生标签的混合 我看了下编辑器下C#的代码自定义Mater.... Read More >