202404-06 飞书机器人发送unity手机中日志 手机中可以通过 Application.logMessageReceivedThreaded来监听日志的信息,在通过File.AppendAllText来将日志写在手机的Application.persistentDataPath目录中。日志可以按天写入,这样即使游戏闪退也可以把当天产生的日志取出来.... Read More >
202312-16 使用ripgrep快速搜索引用关系 反向搜索某个资源被哪里引用,比如贴图被那个资源使用了,可以利用ripgrep这样搜索会秒出结果。如下图所示,拖入待搜索的贴图,然后搜索它被哪里用了。 rg.exe 下载 https://github.com/BurntSushi/ripgrep/releases 代码利用 rg.... Read More >
202310-22 我的新书Unity3D游戏开发(第3版) 又来啦!!又来啦!!大家好,我和图灵出版社合作的新书《Unity 3D游戏开发(第3版)》终于出版了!2023 心怀梦想,乘风破浪!!! 这本书我写了800页,从厚度上可以看到已经远超上一版。有过前两版的经验,我真心希望把最好的一面带给读者。Unity这些年发展的很迅猛,现在的功能也很多,如果.... Read More >
202305-13 Shader变种收集PassType的问题 材质上可以通过material.shaderKeywords来获取使用到的宏,接着使用ShaderVariantCollection就可以动态创建变种收集器了。 [crayon-673ed9e1adb70588540164/] 这里面有个巨大的坑就是passtype,比如这里有两个宏A和B同时开.... Read More >
202209-09 Unity边玩边下限制下载速度 Unity提供了DownloadHandlerFile类来进行文件的下载,如果是那种网络比较好的宽带每秒下载速度可以达到20M以上,这样导致IO容易卡住。如果是进游戏前那种提前下载肯定没问题,但是边玩边下这种如果不限制下载速度那么游戏就不会那么流畅了。 Unity提供了DownloadHand.... Read More >
202209-07 URP场景渲成一张图优化性能 我们游戏是回合制卡牌,场景并不会像MMO那样人物在屏幕上可以自由移动,这里产生的一个优化的可能就是将场景先渲染到一张图上,然后在Blit到屏幕上,然后在绘制后面的人物。前提是相机不能移动和旋转,这样在低端机上可以从设计上锁了镜头的旋转移动。如果对效果要求不那么高其实RT用ARGB32就够了。 [c.... Read More >
202208-28 URP下让美术同学困惑的多主光计算 在URP中Input.hlsl中定义了主光的全局变量,C#管线这边需要每帧将主光的位置和颜色传递到Shader中。 [crayon-673ed9e1b033b695321018/] 如下图所示,在FrameDebugger中可以看到,这里显示的数值是localToWorldMatrix后的结果,.... Read More >
202208-16 打包IOS遇到一个报错 DXT1 compressed textures are not supported when publishing to iPhone Resources/unity_builtin_extra 真是坑啊,原来是美术同学使用了一张内置贴图"Default-Checker-Gray",关.... Read More >
202206-11 动态开关的宏导致Shader内存过大 今天Profiler了一下发现Shader的内存已经接近1个G了,原因就是multi_compile引起的。其实大部分宏都是采用的shader_feature的方式,但是由于某些效果需要运行时代码动态开关,不得不写成multi_compile,比如我们写了三个宏。 [crayon-673ed9e1.... Read More >
202204-17 URP的OverridMaterial给每个物体单独设置参数 Overrid Material就是在原本材质的基础上在覆盖一个新的,如果覆盖了这个材质就会绘制2次。如下图所示一般会添加一个层,在Filtering中不包含Actor层,这样渲染时就会过滤它。 如下图所示,添加一个新的渲染器,设置LayerMask为Actor层,下面在设置一个可覆盖.... Read More >
202204-13 URP的RenderMaskLayer 今天看源码无意间发现了renderingLayerMask属性,真是解决了一个大问题啊。 比如我有多个角色,希望其中某几个拥有描边效果,此时又不希望写多个Layer层。就可以添加一个RenderMaskLayer。如下图所示。 可以自己扩展一个RenderObjects类。 Rende.... Read More >
202203-17 不写GUI面板自由拓展Lit着色器 在URP中PBR的材质是Lit.shader,由于项目组需要拓展不得不仿照它的写法在写一堆C#的代码来配合面板的显示,一方面容易出BUG另一方面非常麻烦。 首先复制一个Lit.shader改成MyLit.shader放到Asset目录下,Properties属性面板中下面写入 [crayon.... Read More >
202203-11 Unity3D脚本复制场景的锅 美术制作场景的时候习惯放置一些参照物,由于每次他们都会忘记删除,所以我们制作了一个脚本根据源场景自动生成一份新场景,以节点命名,生成的时候自动删除这些参照物。如下图所示,场景烘焙过,只保留Scene节点,导出新场景其他节点都删除掉。 如下图所示,拷贝场景后只保留了Scene节点,其他都删除.... Read More >