摘要: 前面说到我们要做一套一半尺寸的低分辨率图片,所谓一半,其实都是直接整数除法/2,然后发现前期美术做的资源,好多都是奇数尺寸的,一半之后除不尽,就会带来各种问题。于是就想先看看都有多少奇数的贴图,马上想到用python拉,但是python我不熟啊,纠结了一小时才弄好。问题1:要获取目录下所有的png文件,这个简单,直接os.walk所有文件再判断下endswith后缀就好。问题2:要获取图片的尺寸,这里我用了一个PIL库,可以读取图片,通过size获得尺寸。貌似问题到这里就解决啦?结果不是的,因为python本来我就自己随便看的,好久不用忘记了,结果遇到两个很纠结的基础问题。问题3:想把文件尺寸 阅读全文
posted @ 2014-03-10 16:18 unionfind 阅读(428) 评论(0) 推荐(0) 编辑
摘要: 游戏初始的资源总是做到最高清的,但是其实低端设备没有那么好的分辨率,也没有那么多的内存支持,所以通常就会希望对这些设备做一套低清资源。前面谈到过Cocos2d-x结合CocosBuilder的解决方案,现在发现Unity+NGUI也有对应的做法。首先明确一个概念就是在这个解决方案中,不管是高分辨率还是低分辨率下,对于一个控件而言,控件自己的尺寸是固定的,变化的是两套atlas。对于atlas而言,首先png尺寸上是差了一半,然后所有sprite类似于uv这样的位置大小参数,也变化成一半,最后有一个叫Pixel Size的参数,要变成两倍。如果贴图缩小了一半,那么贴图里一个像素占的位置就应该增加 阅读全文
posted @ 2014-03-10 16:16 unionfind 阅读(513) 评论(0) 推荐(0) 编辑
摘要: 前面那个Adaptor做好之后,为了练手,又给自己找了个新的需求。我们游戏很多地方都有用到相册一样的四角框,四个相同的sprite,通过scale翻转,然后嵌在大图片的四个角上。因为用到的场合大小不一样,所以每次四个角要调四次位置。于是我决定做成一个通用的prefab,提供一个vector2记录离中心点的偏移值,然后可以像在Unity其他地方一样,拖拽改变偏移值的大小,与此同时,屏幕上的四个角也会跟着移动。开始我有个土方法,就是在自己的这个类里面加一个[ExecuteInEditMode],然后在update里面更新,结果同事说,没事要少用这个东西,另外发现用了这个之后,就算场景里什么都不动, 阅读全文
posted @ 2014-03-06 16:09 unionfind 阅读(553) 评论(0) 推荐(0) 编辑
摘要: 前面的propertydrawer准备好了之后,新写了UIAdaptor的类,在存放数据的4个Vector3变量前面加上[UIAdaptorAttribute]就大功告成了。然后这个类有个public的方法,可以根据当前的设备是phone还是pad,将所在gameobject进行相应的更新。这个代码只用在载入的时候跑一次就好了,问题是怎么让他跑呢?通常我们用的方法是GetComponentsInChildren,但是如果这个脚本本身不是active的,就没法得到,解决方法很简单,传入一个参数true就可以了,这样即使这个脚本前面的勾没勾上,也还是能获取到。但是实际上遇到的问题通常不是这个脚本自 阅读全文
posted @ 2014-03-05 17:46 unionfind 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 这个东西也没怎么用上,但是做的过程中用到不少东西,记一下。初始的需求是想在phone和pad上用同一套ui(不然都是累死的体力活),但是如果直接缩放pad上面的ui到phone上,可能出现按钮太小点不到,字太小看不清。我总结其实常见的需求也就是把个图片放放大啦,然后调个位置什么的。就想做个UIAdaptor的脚本,里面存放phone和pad对应的两套数据。也就是4个vector3:phone和pad用到的position以及scale。为了方便美术进行设置,想到EZGUI设动画的时候有类似的功能,就想给这四个vector3都添加两个按钮,一个是SaveTo,把当前用到的数据存到对应的变量里,一 阅读全文
posted @ 2014-03-05 17:35 unionfind 阅读(737) 评论(0) 推荐(0) 编辑
摘要: 先build standalone,否则可能不准确。在build setting里面注意development build,autoconnect profiler,script debugging都勾上。如果游戏有用到额外的asset,需要一起拷过来。要获得CPU profiling出来比较详细的信息,把上方的deep profile勾上。要获得贴图信息,可以去Memory部分,把下方的simple改成detailed,然后点右边的take sample,就可以快照某一时刻用到的所有贴图啦。 阅读全文
posted @ 2014-03-04 13:29 unionfind 阅读(2009) 评论(0) 推荐(0) 编辑
摘要: 刚刚要做个图标从选择面板飞到显示面板的动画效果,记录几个常用的函数。NGUI做动画很方便,直接tween就行,但是里面用到的具体数值,都是针对local坐标而言的。但是这里起始位置结束位置和要移动的物体本身不在同一个父亲下面,所以需要进行坐标转换。var worldPosition = trans.parent.TransformPoint(trans.localPosition);return gameObject.transform.parent.InverseTransformPoint(worldPosition);第一句把目标的local坐标转换成世界坐标。第二句把世界坐标转换成自己 阅读全文
posted @ 2014-03-03 16:02 unionfind 阅读(703) 评论(0) 推荐(0) 编辑
摘要: 这篇标题在我的草稿箱里面呆很久了,期间风起云涌,我又跑去unity项目了。cocos2dx3貌似要抛弃extension下面的控件另外做了一套新的,这是要彻底和cocosbuilder分道扬镳的节奏,就更不用说cocosbuilder其实已经不更新了,因为作者被apportable招揽旗下,去开发只支持cocos2d的新编辑器,然后用apportable来跨平台。Anyway,目前的unity项目遇到的这个问题,在cocosbuilder3里面是能很好解决的,所以又翻出来写写。这个问题是不同设备因为分辨率相去甚远,所以为了达到显示效果和资源大小的最佳搭配,为不同设备提供多套资源显然比较科学简单 阅读全文
posted @ 2013-12-05 18:04 unionfind 阅读(364) 评论(0) 推荐(0) 编辑
摘要: 上篇提到因为全局对象没有初始化造成的windows上不crash但是安卓上会crash的问题其实就是个很简单的空指针问题。但是因为对安卓代码不熟悉,前后折腾了一个星期才发现。最开始的时候安卓手机是需要装个似乎叫GDB的工具才能调试的,但是据说很不好用,我没用过,然后其他同事能用的也很少。后来听说4.0以上的手机可以连eclipse调试了,喜大普奔的借了一台来,结果发现eclipse的adt版本太低,右键不出现debug as Android Application这个选项,于是升级。这类东西的升级向来都是噩梦,各种需要配套,而且速度经常还很慢,于是反复装反复升级,算是好了。中间还出来一个问题, 阅读全文
posted @ 2013-11-11 11:18 unionfind 阅读(795) 评论(0) 推荐(0) 编辑
摘要: 对于C++编译链接项目依赖什么的一直不明真相,不过通过遇到过的几个问题还是增长了一些了解。记录之。库分为静态库动态库。动态库里面还有一种特别的是运行时有选择加载的插件,我改cocosbuilder的时候,载入的插件的函数有initWithBundle什么的,和这个有点儿联系。静态库是会被编进去的,但是不是全体,没有用到的符号是不会被编进去的!这个具体现象可能还平台相关,之前遇到一个空指针crash bug,只在安卓有,windows没有。原因是某全局对象会在构造函数中把自己注册到一个模块列表中,随后启动后列表会调用所有注册模块的startup,因为没有调用相关指针初始化的函数,这个时候会出现空 阅读全文
posted @ 2013-11-07 18:12 unionfind 阅读(702) 评论(0) 推荐(0) 编辑