201610-26 UGUI研究院之Text字体花屏(二十二) 今天我同事说在老项目用的是unity4.7.2打包发布韩文和泰文,偶尔会出现字体花屏的问题,但是中文是好的。(我也不知道怎么解释,只能靠猜吧)我们用的TTF动态字体,Text每次赋值的时候Unity会生成贴图,以及保存每个字的UV信息,那么显示字体的时候根据UV信息去生成的贴图里取最终渲染在屏幕上。.... Read More >
201609-05 Unity3D研究院之将UI的点击事件渗透下去(九十) 处理UI还有3D模型的点击推荐使用UGUI的这套事件系统,因为使用起来比较简洁,不需要自己用代码来发送射线,并且可以很好的处理同时点击UI和3D模型上。 1.给3D摄像机挂一个Physics Raycaster组件。Event Mask过滤掉UI. 2.用unity自带的Event Tr.... Read More >
201608-18 Unity3D研究院之限制RectTransform下某个属性不可被修改 如图所示,让RectTransform下某些属性不可以在Inspector面板上修改。 DrivenTransformProperties这个结构体你可以|符号 设置你希望禁掉的属性。 [crayon-650e0e7c059f7850531894/] .... Read More >
201608-17 Unity3D研究院之ContentSizeFitter同步立即响应回调 ContentSizeFitter使用Preferred Size来设置RectTransform不能立即生效,必须要等一帧,也可以利用OnRectTransformDimensionsChange的回调方法。 但是这么做还是很恶心,最好还是能同步的计算出它的区域,一般我们可能会横向纵向的.... Read More >
201608-02 Unity3D研究院之Prefab不挂脚本保存数据 今天和同事一起发现了一个新科技,我们想在Editor下不给Prefab挂脚本,但是又想保存一些信息到Prefab上。 通过AssetImporter可以把数据保存在userData上,它是get set属性。 [crayon-650e0e7c0634a616614525/] 这样最终数据会.... Read More >
201607-20 Unity3D研究院之获取BoxCollider八个点的世界坐标 我们想把场景中的BoxCollider的坐标点导出出来让服务器也能用。虽然BoxCollider自身的大小可以获取出来,但是如果有父对象,并且有坐标的变化那算起来就比较麻烦了。还好unity提供了一个方法,真的很便捷。如下图所示,我用了8个标记点来标记获取到的boxcollider的坐标。旋转、缩放.... Read More >
201607-13 Unity3D研究院之Inspector面板枚举的别名与排序(八十九) 虽然mono是支持unicode的。可以在枚举里写中文,但是我还是觉得写英文好一些。可是在编辑器上策划是希望看到的是中文的,还有就是枚举的展示排序功能,策划在编辑的时候为了方便希望把常用的枚举排上前面。 把如下代码放到你的工程里就可以直接用了。 [crayon-650e0e7c06f1781.... Read More >
201606-29 Unity3D研究院之查找资源被哪里引用了 Unity提供了一个方法 AssetDatabase.GetDependencies(),但是它只能查找这个资源引用了那些资源。 但是我想要的是查找某个资源被那些资源引用了,这是两种相反的查找公式。 其实网上也有很多这样的插件了,似乎代码量都太多了。昨天晚上加班时脑洞打开,想到了一个简单的方法。通过.... Read More >
201606-06 Unity3D研究院之限制某些脚本不能随便在Editor模式下绑定 Unity中,只要继承MonoBehaviour的脚本都可以任意挂在gameObject上。但是有些脚本可能我并不希望在Editor模式下任意被绑定,或者我只希望某些特定的gameObject才能绑定一些脚本。 编辑模式下添加脚本一共有两种方法, 1、使用鼠标拖拽到某个gameObjec.... Read More >
201605-31 Unity3D研究院之meta文件里timeCreated变化导致SVN改变 Unity5的meta文件格式中增加了一项timeCreated 一般也没啥问题。但是如果我想用代码去生成一些文件,为了避免删除的情况,肯定是先清空文件夹下的所有文件然后在生成。 这样就出现个问题。因为把文件夹清空了。所以重新生成文件以后meta里的timeCreated就变化了。。这个太蛋疼.... Read More >
201605-17 Unity3D研究院之获取某个方法执行的时间 我想在一帧内获取某个方法的总执行时间。开始想用Time.time减去之前保存的时间。但是发现在一帧内永远返回的是0,多帧的话可以,看来Time.time只会在每一帧赋值更新一次,所以一帧内的就取不到了。 然后查了一下c#有一个Stopwatch的类可以帮我们记录时间,使用起来也挺便利的。。 .... Read More >
201605-16 Unity3D研究院之利用unity自带API提前合并场景Mesh 版本:Unity5.3.3 Unity自带了合并Mesh的功能,最简单的做法就是在Root节点勾选static选项,它的原理就是运行时合并。但是最近我在开发的时候就遇到了问题,因为我们场景非常庞大,Mesh的顶点不能超65535所以Unity会自动把合并的mesh分成了很多分mesh,总之顶点.... Read More >
201605-10 Unity3D研究院之过滤多余的材质 Unity可以勾选static来进行静态合批, 运行时也可以 StaticBatchingUtility.Combine()来进行合批。但是你仔细观察一下。。 如下图所示,这里我有两个相同Shader、相同参数的材质。 我都勾选了static以后运行发现dc还是会多一个。因为u.... Read More >