
u3d
文章平均质量分 71
yxriyin
因为啥都不精通,所以啥都自成一家
展开
-
opengl蓝宝书读书笔记
裁剪空间坐标系中,dx是从0到1,opengl是从-1到1. 都是从近到远深度值也不一样,dx中,深度缓冲区中1代表近平面,深度缓冲区中0代表远平面。 而裁剪空间范围对应的是near到0.而opengl中,深度缓冲区0代表近平面,1代表远平面。裁剪空间范围分为都d3d和opengl两个系列。d3d范围是0到far,而opengllike是-near,到far。联...转载 2019-10-22 20:04:26 · 1270 阅读 · 0 评论 -
arpg怎么做战斗回放
游戏一般需要做战斗回放功能,这大多是回合制游戏。arpg虽然比较少,但原创 2014-08-03 22:02:26 · 2787 阅读 · 0 评论 -
刀塔传奇这种类型的arpg客户端战斗架构设计
纵观现在的手游,原创 2014-08-12 19:25:29 · 6595 阅读 · 3 评论 -
unity3d 摄像机抖动情况和解决方案汇总
用unity3d 如果你没有碰到摄像机抖动的原创 2014-09-13 00:20:22 · 25778 阅读 · 1 评论 -
WinDbg调试unity3d无响应实战
今天终于让我碰上了,无响应了,毫无疑问,马上放下一切工作,Attach上去。 首先看下任务管理器,cpu 13% ,应该是死循环了。(注意 win7死循环是不会cpu 100%的)。 运行!runaway, 发现0号线程特别费时,也就是主线程。 然后切到0号线程,查看堆栈,妈蛋什么都没有。 这里我纠结了好久,然后g了一下,又打断点,堆栈突然出现了。原创 2015-02-02 18:43:04 · 3539 阅读 · 0 评论 -
unity3d 切换场景不销毁对象池中的物体方案
要在手机上玩转u3d,一定会做的一个就是对象池,在这里我不打算讨论对象池本身,基本思路大同小异。我这里想讨论的是切换场景引发的对象池中对象的问题。 首先如果你什么都不处理,那么一旦你切换场景,你会发现你对象池中所有GameObject本身或者变量全部都变成了null。你下次使用这个对象就会抛出指针异常,所以你肯定会去研究怎么切场景不销毁,ok,你马上就能找到DontDestroy原创 2014-12-30 19:44:34 · 13533 阅读 · 2 评论 -
编译unity3d分支上的mono
由于加密需要,要编译这个东西,非常蛋疼的是,编译文档只是和mono一样的,但实际上unity3d自己改了很多东西,直接编译根本通不过。也许作者压根没想会有人去编译这个东西,于是就自己编编,压根不说编译环境。 我用了整整三天,不断调试,不断修改它的代码,不断调整自己的环境,终于成功了,不过奇怪的是大小上比它大很多。不过功能是完整的,直接替换libmono.so是可以使用的。原创 2015-03-10 14:51:39 · 1913 阅读 · 3 评论 -
unity3d加密代码结束篇
确定Mono可以成功后,我就自己修改了它的源代码,一开始虽然不顺利,但幸运的是可以用g_warning打印。通过打印发现自己多解密了一个字节。最终成功,最后一步就是将debug版改成release,在sh脚本中去掉-g参数,一切都十分完美。原创 2015-03-11 15:14:57 · 1129 阅读 · 0 评论 -
unity3d 加密补充篇
因为问我如何编译Mono的人比较多,但这个问题实在无法一下子说明白,我只能专门弄一下了。用了半天时间。 首先说明一下背景: http://www.zhihu.com/question/25414422 也就是说要加密第一步就是能够自己编译mono 后面的比较简单,就第一步比较复杂,所以我专门做了一个视频,本来因为我成功过一次,原创 2015-04-06 21:21:29 · 1211 阅读 · 8 评论 -
unity3d完美处理NGUI和特效的显示问题
NGUI相当不错,但是有一点比较纠结的就是面板上显示特效的时候,你会发现要么盖住特效,要么面板永远无法盖住特效。很多人说改renderqueue,然后就能显示了,然后下面一堆楼主给力。。。。呵呵。 先从原理上解释吧,NGUI是通过调整renderqueue来显示不同层,然后它的shader是不写入z值的,然后特效刚好也是不写入z值的,所以你要控制特效和UI的关系,确实只能通过rend原创 2015-03-03 14:34:27 · 7414 阅读 · 9 评论 -
天梯匹配算法的思路
玩过dota的人一定会知道妖妖平台的天梯匹配算法。给人的感觉非常的合理。那么如果要自己实现一个高效的匹配算法,应该还是有点难度的。幸运的是一般同时在线的玩家不会超过1w。假设有1w个玩家同时匹配,那么对于服务器来说,O(n)的复杂度肯定是没有问题的。O(n^2)的复杂度看服务器本身的性能了。 从天梯的合理性来看,O(n)复杂度去实现是相当困难的。毕竟你很难保证参加人的积分是合理原创 2015-05-22 12:05:37 · 9586 阅读 · 0 评论 -
删除丢失脚本
有时候一开始写了一些脚本,但到项目后期觉得这些脚本没用,就删掉了,但有些prefab上如果挂有这些脚本,就会提示警告:脚本已丢失,多了就非常不爽。所以需要找到所有的丢失脚本的路径,并删除。 查找代码如下: using UnityEngine;using UnityEditor;public class FindMissingScriptsRecursive转载 2015-05-19 19:17:37 · 3024 阅读 · 0 评论 -
unity3d ngui 适配性价比最高的方案
对于网上各种适配方法,说明的有很多,但我认为大部分都是自己写一个demo啥的能行然后就说这种方案可以。但实际上这些方法到底怎么样,恐怕并不尽如人意。 ngui的UIRoot自带缩放功能,假设你的游戏按照普遍的1280*720设计,那么所有以此比例的分辨率都将完美适配。 那么如果比例不同呢,uiroot并没有做任何处理,那么就是当宽度太宽,那么你的游戏将会被截边,如果高度原创 2015-07-08 10:47:58 · 3089 阅读 · 5 评论 -
unity3d加密补充片(2):关于u3d 4.6的问题和win下面的自动化加密工具
昨天刚好看了这篇文章:http://www.xuanyusong.com/archives/3553 问了下雨松MOMO,告诉我4.6后面的版本需要高版本才可以,可能是因为分支上的mono更新的是比较新的版本。所以我自己测试了下4.6.6以上应该都是可以的。4.6.2以下估计是不行的,中间版本我并没有试过,所以建议大家直接用4.6.6以上的版本吧。原创 2015-07-17 11:11:33 · 1411 阅读 · 4 评论 -
unity coc 战斗回放总结
直奔主题,战斗回放的两种方式:1.记录每一帧的状态,包括所有的对象的位置,动作等。优点是通用,易于实现。缺点是不易扩展,如果你增加某种状态,就要在回放中增加对应的实现代码。而且文件很大,假设你记录2分钟,120s,那么就是6000帧以上,每一帧假设100个对象需要记录,那么这个数值压缩后基本在M级别以上,你打一场战斗要上M的数据量,对于移动端流量是不可接受的。2.记录起始状态和玩家全部操作原创 2015-10-05 16:20:54 · 4990 阅读 · 4 评论 -
u3d减少编译时间原理
How it's workingMad Compile Time Optimizer is taking an advantage of Unity special folders and how Unity compiles things.If you’re already familiar with this matter then you most probably转载 2015-09-17 12:28:04 · 1594 阅读 · 0 评论 -
z-fighting
https://en.wikipedia.org/wiki/Z-fightingZ-fighting is a phenomenon in 3D rendering that occurs when two or more primitives have similar values in the z-buffer. It is particularly pre转载 2015-10-08 10:31:37 · 1538 阅读 · 0 评论 -
冰霜效果的思考和实现
由于最近要做一个冰系的角色,就想能不能做一些冰霜效果。那么就试试吧,先弄一张原图:1.常规的冰霜,最简单的要数霜冻的颜色变化,只需要减少亮度,增加蓝色分量。片段着色器:texcol *= fixed4(0.9, 0.9, 0.9, 1f); texcol.b += 0.2;效果如下:虽然简单,但效果也十分一般。2.如果你玩过冰火围城,它里面的冰冻效果则是原创 2015-11-23 16:25:53 · 2005 阅读 · 0 评论 -
一些不错的课外知识补充
http://blog.youkuaiyun.com/leonwei/article/details/44539217基于物理的光照模型,实现方程非常复杂,仅仅了解下即可。http://www.tairan.com/category/opengl-es/2/OpenES绝佳入门网站,对了解一些高级话题必不可少。转载 2015-11-27 17:44:57 · 838 阅读 · 0 评论 -
Unity shader中的法线详解
一次写shader的时候,根据法线调整视觉效果,却发现坐标不同的情况下,会有颜色突变的情况。不解。故寻找计算法线部分的知识。首先看一下大神文章了解下大概:http://blog.youkuaiyun.com/candycat1992/article/details/41605257 1._Object2Worldis the transformation from object co原创 2015-11-27 13:51:55 · 4790 阅读 · 0 评论 -
Shader中“深度”的理解和思考(附例子)
经常看到深度测试啊,深度图啊,但这个名字和它的用途其实让人很难联想到一块去。 这个不是高级议题,只不过很多高级议题会涉及到它,所以还是稍微写下,权当笔记。 首先随手建立两个物体: 其中一个cube里面包含一个圆体,为何会呈现上面的样子呢,引擎是这么去做的: 1.由于我设置的队列是透明队列,所以引擎保证绘制顺序是从原创 2016-01-17 22:11:53 · 3430 阅读 · 1 评论 -
Unity局部高效实时阴影的思考和实现
无意间看到一篇文章,说是Unity5 demo中为了实现角色的良好阴影,单独给角色设计了一个角色阴影系统。而且使用的是比较老的技术,但效果很好。其实在很多时候,我们需要的并不是万能的阴影光照系统,而是局部能做到效果就行。 万能的好处在于任何情况都能看上去合理,但是相对的,性能开销也大,同时为了兼顾各种情况,只能做各种效果的折中,所以我们看到了现在移动平台上,要么就是没有实时阴影,原创 2015-12-03 18:00:29 · 10012 阅读 · 17 评论 -
自己实现的A*平滑算法
以前一直用的是漏斗平滑算法,但对于八格子寻路来说,效果其实不是很好,然后coc类游戏的话,就需要更加平滑的路线。于是自己想了一套方案,顺便发现了以前判断直线穿越格子的函数的问题。先矫正以前的函数:public bool CheckCanGoForward(Vector3 startPos, Vector3 endPos, int extNum) {原创 2015-10-15 17:18:02 · 5199 阅读 · 0 评论 -
Unity A*寻路三个简单实用的算法
1.怎么判断直线通往目标的路径上有障碍物?这种情况下,DDA算法比A*更快,如果没有障碍物,那么直接前进即可,不用A*算法,对于coc这种百人寻路是可以节省不少性能的。代码如下:public bool CheckCanGoForward(Vector3 startPos, Vector3 endPos, int extNum) { //ini原创 2015-10-13 11:42:32 · 5436 阅读 · 0 评论 -
寻路最终版哦
相信大家用unity3d寻路的时候,一定会碰到多人原创 2014-11-07 23:18:28 · 6548 阅读 · 18 评论 -
漏斗平滑算法
由于中文方面几乎没有说明,英文也要翻墙看,太麻烦了,这里做一下笔记。原创 2014-09-11 16:17:29 · 3100 阅读 · 2 评论 -
关于t4m在红米上会有马赛克的问题的延伸
很早就知道了t4m地表在电脑上是好的,红米上就会有马赛克。各种百度知道了要自己写一个shader,就可以了。但原因一直不明。因为解决了问题,就没有深究。但今天碰到了一个水的shader,同样,电脑上很好,红米上又是马赛克。这次水的shader太过复杂,要自己重写一个顶点表面着色器不是很容易,于是我就回到以前那个简单的t4m着色器上,想看看问题到底出在哪。通过不断的排除法,最后定位到最后几行原创 2016-10-26 16:11:10 · 1701 阅读 · 1 评论 -
unity obb不用重启的方案
用obb的时候有一点很困扰,就是下载完毕后unity无法马上识别出obb一开始使用了重启的方案,可是体验不好。后来发现有人说只要重新切一次activity,就可以。我首先试了重启activity,但总会崩溃。现在改成了切换一个空的activity,然后再切回来。就可以了。原创 2016-12-13 14:54:06 · 2474 阅读 · 0 评论 -
obb和android版本问题
android6.0开始谷歌把obb权限提升为root权限可是对应的obb相关没有更新导致玩家无法访问obb文件夹只有在重启手机后才可以看了下官方说明 也没有给出解决方案只有重新将sdk版本降到22,临时修复这个问题。23以上就会这样。原创 2017-07-17 20:29:59 · 5457 阅读 · 0 评论 -
寻找更好的海水的移动解决方案
本来已经实现了海岛奇兵的海水,但总觉得差点意思。今天开始寻找移动平台的次时代海水的方案。本来找到了一篇文章,可惜只是在window平台的。原因是移动平台不支持深度图,其实很多时候,深度图可以自己模拟。于是我打算慢慢开始修改成移动平台的版本。本来的顶点函数:void vert (inout appdata_full v, out Input i) { UNITY_INITIAL...原创 2018-06-28 12:00:46 · 1554 阅读 · 0 评论 -
读书笔记五 可视范围判断
这里是用了统计学的原理,构造了一个协方差矩阵,协方差矩阵其实就是下面:为了得到我们的结果,其实就是让x y z三者之间的协方差为0.通过计算协方差的特征值可以算出他们的三个新坐标轴。边界测试还是挺有用的,平时自己如果有需要可以使用边界测试判断是否在包围盒内。 ...原创 2018-08-14 22:46:16 · 400 阅读 · 0 评论 -
opengl蓝宝书读书笔记七
首先,片段操作第一步就是进行裁剪, 然后是多重采样,这里的采样不是对贴图采样,而是对每一个片段生成亚像素,这样在后面进行多重采样的时候就可以得到抗锯齿的效果。 ...原创 2018-10-11 21:10:37 · 399 阅读 · 0 评论 -
gpu instancing animation代替骨骼动画的做法
最早是在Unity推出gpuinstancing后,马上有人做了一个顶点动画代替骨骼动画的方案,当时自己也测试了一下,红米2一千人可以跑60帧,确实非常不错。后来发现UWA群里也有人在讨论这个东西的做法,当时M神说可以用烘焙骨骼的方式代替烘焙顶点,这样子烘焙出来的贴图大小只和骨骼数相关。而小米超神也说是通过烘焙顶点,不过为了减少烘焙文件的大小,使用了类似RGBM的方式存储数据。 ...原创 2018-10-11 22:05:40 · 5914 阅读 · 4 评论 -
手机端战争迷雾的实现
先展示效果:https://v.qq.com/x/page/k0763jy8qjr.html最早是在war3看到战争迷雾,当时觉得真牛逼。到现在技术基本已经成熟,自己也就抽空做一个。思路还是定在用tile来实现,毕竟从性能优化角度说,tile可以预先烘焙数据,比实时计算要快不少,这样的话手游也可以使用。先画一批格子:有了基本的地图数据,我们就需要开始考虑怎么实现我们的战争迷...原创 2018-10-24 19:03:07 · 3407 阅读 · 0 评论 -
手机端影子的实现
最早做了一个平面影子,现在网上的文章也很多,实现基本大同小异。本来我自己打算加入gpu instancing的特性,进一步提高影子的渲染,但我实际测试却发现,负优化。经过别人的指导,发现是如果setpass calls没变化,那么dc其实影响不大,尤其在现在的手机上,dc不是主要的,setpass calls才是重点。仔细找了文章:The main reason to make few...原创 2018-10-27 21:05:13 · 822 阅读 · 3 评论 -
pbrt读书笔记
这是物理渲染的几个基本特征,其中最重要的就是线性和能量守恒。 w表示的点集合,而fai表示的是通量,把通量除以面积,就是光强,也就是通量密度。最后的辐射度,还要考虑dA,因为是斜射,所以还要考虑投影,才是准确的。这里插入一个小的笔记,对于两个坐标系,其中一个坐标系的三个轴用另一个坐标系去表示,那么由这三个轴组成的列详细就是那个转化矩阵,而它肯定是个正交矩阵,所以他...原创 2018-11-01 21:41:51 · 480 阅读 · 0 评论 -
移动端大规模草渲染的实现
先上最终效果:https://v.qq.com/x/page/e0777z5hbqa.html1.用程序生成草地网格 1.1为什么使用程序生成而不使用美术提供的网格要在移动端进行大规模草的渲染,首先要考虑的就是性能问题。对于草的渲染,目前肯定要采取的手段是批处理。就是一次性提交所有的草体到gpu进行渲染。目前主流的批渲染有三种方式,具体如下:1)动态批处理这也是渲染草的...原创 2018-12-21 19:34:16 · 3759 阅读 · 7 评论 -
移动端云渲染的实现
先展示最终效果:体积云视频 类似渲染云这种自然现象的时候,必须首先了解噪声这个概念。这个噪声指的是描述自然界规律的一些随机函数。例如大名鼎鼎的柏林噪声。Perlin噪声被大量用于云朵、火焰和地形等自然环境的模拟,而Worley噪声被提出用于模拟一些多孔结构,例如纸张、木纹等。不过其实Wroley噪声也可以用在云上面。 对于噪声这里不想深入讨论,感兴趣的可以去看论文或者...原创 2018-11-22 17:58:44 · 3753 阅读 · 5 评论 -
pbrt读书笔记2
这里插入一个小知识点,通过raymarching可以估算表面的法线,for(int currStep = 0; currStep < steps; currStep++){ if(distance(currPos, objCenter) < radius) { const float est = 0.01; float3 n = normalize( f...原创 2018-11-22 22:15:24 · 1009 阅读 · 0 评论 -
移动端下雨系统的实现
先展示最终效果:https://v.qq.com/x/page/j0808yxmm3w.html可以看到雨水会导致物体潮湿,会在平面形成水波,会在斜面形成纹路。雨会被物体阻挡。阻挡的部分依然保持干燥,干燥和潮湿有过度。水积累到一定程度还会有反射。 很早就想做一个完整的天气系统。不过难度太大了,所以打算拆分成一个个小系统。首先就是做最常见的下雨。 雨水本身实现...原创 2018-12-06 20:51:31 · 1309 阅读 · 2 评论