Window是没这问题的,然而Mac上所有Unity自带的窗口基本就是这样。比如Profiler窗口,随便在Unity主窗口中点击一下, Unity主界面就把Profiler窗口盖住了。。 很蛋疼啊。 其实Unity的窗口是可以设置焦点类型的。只是系统窗口,c#是访问不到的,不要紧我们可以用强大反射.... Read More >分类目录归档:Unity3D频道
Window是没这问题的,然而Mac上所有Unity自带的窗口基本就是这样。比如Profiler窗口,随便在Unity主窗口中点击一下, Unity主界面就把Profiler窗口盖住了。。 很蛋疼啊。 其实Unity的窗口是可以设置焦点类型的。只是系统窗口,c#是访问不到的,不要紧我们可以用强大反射.... Read More >2017
04-10
04-10
[投稿]Unity3D游戏优化之头顶UI
3D角色头顶会显示文字、图标、血条等,它会跟随角色移动,始终朝向相机,可能还有定制的缩放,一般情况下会考虑用UGUI来做,但完成后发现这样做的效率很低,而且遮挡正确性也保证不了。 效率低因为: 1,渲染上每块文字、图片都要用一次drawcall,图片文字又可能是交替出现的没法利用dynamic ba.... Read More >
Unity5.6今天发布了。支持打包lz4压缩包,支持ios和android。 这个lz4不是assetbundle,而是压缩预制在游戏包内的资源。比如场景依赖的资源,或者Resources目录下的资源,Prefab关联的资源等等。 压缩资源的描述如下 Compressed data files i.... Read More >
在UI上显示模型无非就是2种。 1.在两个UI摄像机中夹一层3d摄像机,利用摄像机的Viewport Rect属性对模型进行裁切。 2.使用RenderTexture渲染在RawImage后显示在UI上。 我上一个项目就是采取第一种方法,用起来很不舒服。因为有很多效果都做不了,比如就是UI上盖模型,.... Read More >2017
03-24
03-24
UGUI研究院之比较大的图片的压缩(二十四)
好久没写文章了,最近太累了。。 使用UGUI开发界面,一般比较小的图片会设置一个tag,让它打进图集。其实还有很多大的图片,比如logo、头像、图标、关卡图、等 。 宽高各一方大于256 或者 512的图片。 这类大的图片不太适合放在图集中,因为他们会把图集撑的很大,可是如果从图集中拿出来,又没办法.... Read More >
看过UGUI源码的朋友一定都知道,UI事件会在EventSystem在Update的Process触发。UGUI会遍历屏幕中所有RaycastTarget是true的UI,接着就会发射线,并且排序找到玩家最先触发的那个UI,在抛出事件给逻辑层去响应。 团队多人在开发游戏界面,很多时候都是复制黏贴,比.... Read More >2016
12-26
12-26
Unity3D研究院之UGUI安卓自动ETC1通道分离(九十一)
网上已经有类似的解决方案,原理就是在做一张通道图,然后在shader里混合。代价就是需要做个shader在做一个脚本代替Image 和RawImage。 今天我发现其实unity自己已经做了这个功能了,不用写shader,也不用替换脚本,原生支持就是方便啊。 先看看我的图集,ETC1 压缩格式 1..... Read More >2016
12-14
12-14
UGUI研究院之UI粒子特效自适应缩放(二十二)
我们UI自适应采用的是Canvas Scaler 设置 Expand模式。 那么UI可以很好的自适应屏幕,可是粒子特效就会出问题所以写下了这个脚本来自适应UI的粒子特效。 比如技能图标的特效光圈。 当屏幕缩放后,UI变小了,可是特效出问题了。 测试环境unity5.3.5 代码如下所示.... Read More >2016
10-29
10-29
Unity3D研究院编辑器之脚本获取资源内存和硬盘大小(二十五)
内存 使用Profiler可以查看某个资源的内存占用情况,但是必须启动游戏,并且待查看的资源已经载入游戏中。我希望的是不启动游戏,也能看到它的内存好做统计。 硬盘 由于unity中的资源压缩格式记录在meta中所以,在文件夹中看到的资源大小是不正确的。打开unity需要选择一个资源,比如Textur.... Read More >2016
10-26
10-26
UGUI研究院之Text字体花屏(二十二)
今天我同事说在老项目用的是unity4.7.2打包发布韩文和泰文,偶尔会出现字体花屏的问题,但是中文是好的。(我也不知道怎么解释,只能靠猜吧)我们用的TTF动态字体,Text每次赋值的时候Unity会生成贴图,以及保存每个字的UV信息,那么显示字体的时候根据UV信息去生成的贴图里取最终渲染在屏幕上。.... Read More >2016
09-05
09-05
Unity3D研究院之将UI的点击事件渗透下去(九十)
处理UI还有3D模型的点击推荐使用UGUI的这套事件系统,因为使用起来比较简洁,不需要自己用代码来发送射线,并且可以很好的处理同时点击UI和3D模型上。 1.给3D摄像机挂一个Physics Raycaster组件。Event Mask过滤掉UI. 2.用unity自带的Event Trigger.... Read More >2016
08-18
08-18
Unity3D研究院之限制RectTransform下某个属性不可被修改
如图所示,让RectTransform下某些属性不可以在Inspector面板上修改。 DrivenTransformProperties这个结构体你可以|符号 设置你希望禁掉的属性。 Read More >2016
08-17
08-17
Unity3D研究院之ContentSizeFitter同步立即响应回调
ContentSizeFitter使用Preferred Size来设置RectTransform不能立即生效,必须要等一帧,也可以利用OnRectTransformDimensionsChange的回调方法。 但是这么做还是很恶心,最好还是能同步的计算出它的区域,一般我们可能会横向纵向的嵌套Lay.... Read More >2016
08-02
08-02
Unity3D研究院之Prefab不挂脚本保存数据
今天和同事一起发现了一个新科技,我们想在Editor下不给Prefab挂脚本,但是又想保存一些信息到Prefab上。 通过AssetImporter可以把数据保存在userData上,它是get set属性。 这样最终数据会记录在Prefab对应的.meta上。 Read More >2016
07-20
07-20
Unity3D研究院之获取BoxCollider八个点的世界坐标
我们想把场景中的BoxCollider的坐标点导出出来让服务器也能用。虽然BoxCollider自身的大小可以获取出来,但是如果有父对象,并且有坐标的变化那算起来就比较麻烦了。还好unity提供了一个方法,真的很便捷。如下图所示,我用了8个标记点来标记获取到的boxcollider的坐标。旋转、缩放.... Read More >2016
07-13
07-13
Unity3D研究院之Inspector面板枚举的别名与排序(八十九)
虽然mono是支持unicode的。可以在枚举里写中文,但是我还是觉得写英文好一些。可是在编辑器上策划是希望看到的是中文的,还有就是枚举的展示排序功能,策划在编辑的时候为了方便希望把常用的枚举排上前面。 把如下代码放到你的工程里就可以直接用了。 使用是这样的,第二个参数就是排序。接收i.... Read More >2016
06-29
06-29
Unity3D研究院之查找资源被哪里引用了
Unity提供了一个方法 AssetDatabase.GetDependencies(),但是它只能查找这个资源引用了那些资源。 但是我想要的是查找某个资源被那些资源引用了,这是两种相反的查找公式。 其实网上也有很多这样的插件了,似乎代码量都太多了。昨天晚上加班时脑洞打开,想到了一个简单的方法。通过.... Read More >2016
06-06
06-06
Unity3D研究院之限制某些脚本不能随便在Editor模式下绑定
Unity中,只要继承MonoBehaviour的脚本都可以任意挂在gameObject上。但是有些脚本可能我并不希望在Editor模式下任意被绑定,或者我只希望某些特定的gameObject才能绑定一些脚本。 编辑模式下添加脚本一共有两种方法, 1、使用鼠标拖拽到某个gameObject上 2、自.... Read More >
Unity5的meta文件格式中增加了一项timeCreated 一般也没啥问题。但是如果我想用代码去生成一些文件,为了避免删除的情况,肯定是先清空文件夹下的所有文件然后在生成。 这样就出现个问题。因为把文件夹清空了。所以重新生成文件以后meta里的timeCreated就变化了。。这个太蛋疼了~~.... Read More >2016
05-17
05-17
Unity3D研究院之获取某个方法执行的时间
我想在一帧内获取某个方法的总执行时间。开始想用Time.time减去之前保存的时间。但是发现在一帧内永远返回的是0,多帧的话可以,看来Time.time只会在每一帧赋值更新一次,所以一帧内的就取不到了。 然后查了一下c#有一个Stopwatch的类可以帮我们记录时间,使用起来也挺便利的。。 如下图所.... Read More >