2017
05-07
05-07
Unity3D研究院编辑器之EditorOnly(二十八)
Unity自带了一个EditorOnly的Tag。意思就是标记过这个游戏对象,只在Editor下生效不会被最终打进包里。这个功能其实很必要,但是可能被很多团队都遗忘了。 例如:美术做的场景需要一些摄像机、角色、特效来进行辅助参照。这些东西单纯只是用来参照的,并不希望打进游戏包中。但是开发阶段又不能再.... Read More >
专注移动互联网,专注Unity3D游戏开发
Unity自带了一个EditorOnly的Tag。意思就是标记过这个游戏对象,只在Editor下生效不会被最终打进包里。这个功能其实很必要,但是可能被很多团队都遗忘了。 例如:美术做的场景需要一些摄像机、角色、特效来进行辅助参照。这些东西单纯只是用来参照的,并不希望打进游戏包中。但是开发阶段又不能再.... Read More >
[System.Serializable]对象放在数组中,默认在Inspector面板上Array的数量是0,如果在这里修改数量,新加的元素在Inspector面板上它是没有默认值的。 比如:我有一个很轻量级的控件,代码中需要序列化List数据,没必要在写个类OnInspectorGUI中自定义绘制.... Read More >
Window是没这问题的,然而Mac上所有Unity自带的窗口基本就是这样。比如Profiler窗口,随便在Unity主窗口中点击一下, Unity主界面就把Profiler窗口盖住了。。 很蛋疼啊。 其实Unity的窗口是可以设置焦点类型的。只是系统窗口,c#是访问不到的,不要紧我们可以用强大反射.... Read More >
Unity5.6今天发布了。支持打包lz4压缩包,支持ios和android。 这个lz4不是assetbundle,而是压缩预制在游戏包内的资源。比如场景依赖的资源,或者Resources目录下的资源,Prefab关联的资源等等。 压缩资源的描述如下 Compressed data files i.... Read More >
网上已经有类似的解决方案,原理就是在做一张通道图,然后在shader里混合。代价就是需要做个shader在做一个脚本代替Image 和RawImage。 今天我发现其实unity自己已经做了这个功能了,不用写shader,也不用替换脚本,原生支持就是方便啊。 先看看我的图集,ETC1 压缩格式 1..... Read More >
内存 使用Profiler可以查看某个资源的内存占用情况,但是必须启动游戏,并且待查看的资源已经载入游戏中。我希望的是不启动游戏,也能看到它的内存好做统计。 硬盘 由于unity中的资源压缩格式记录在meta中所以,在文件夹中看到的资源大小是不正确的。打开unity需要选择一个资源,比如Textur.... Read More >
今天我同事说在老项目用的是unity4.7.2打包发布韩文和泰文,偶尔会出现字体花屏的问题,但是中文是好的。(我也不知道怎么解释,只能靠猜吧)我们用的TTF动态字体,Text每次赋值的时候Unity会生成贴图,以及保存每个字的UV信息,那么显示字体的时候根据UV信息去生成的贴图里取最终渲染在屏幕上。.... Read More >
处理UI还有3D模型的点击推荐使用UGUI的这套事件系统,因为使用起来比较简洁,不需要自己用代码来发送射线,并且可以很好的处理同时点击UI和3D模型上。 1.给3D摄像机挂一个Physics Raycaster组件。Event Mask过滤掉UI. 2.用unity自带的Event Trigger.... Read More >
如图所示,让RectTransform下某些属性不可以在Inspector面板上修改。 DrivenTransformProperties这个结构体你可以|符号 设置你希望禁掉的属性。 Read More >
ContentSizeFitter使用Preferred Size来设置RectTransform不能立即生效,必须要等一帧,也可以利用OnRectTransformDimensionsChange的回调方法。 但是这么做还是很恶心,最好还是能同步的计算出它的区域,一般我们可能会横向纵向的嵌套Lay.... Read More >
今天和同事一起发现了一个新科技,我们想在Editor下不给Prefab挂脚本,但是又想保存一些信息到Prefab上。 通过AssetImporter可以把数据保存在userData上,它是get set属性。 这样最终数据会记录在Prefab对应的.meta上。 Read More >
我们想把场景中的BoxCollider的坐标点导出出来让服务器也能用。虽然BoxCollider自身的大小可以获取出来,但是如果有父对象,并且有坐标的变化那算起来就比较麻烦了。还好unity提供了一个方法,真的很便捷。如下图所示,我用了8个标记点来标记获取到的boxcollider的坐标。旋转、缩放.... Read More >
虽然mono是支持unicode的。可以在枚举里写中文,但是我还是觉得写英文好一些。可是在编辑器上策划是希望看到的是中文的,还有就是枚举的展示排序功能,策划在编辑的时候为了方便希望把常用的枚举排上前面。 把如下代码放到你的工程里就可以直接用了。 使用是这样的,第二个参数就是排序。接收i.... Read More >