unity3d杂记
由于公司用unity3d开发客户端部分,今天去参加了下unity3d成都开发者大会。在这里简单记录一下会议里关于unity3d的内容。
说到unity3d,第一次知道的时候也是大概3年前的事情。这几年它发展十分迅猛,不得不佩服他在中国市场上推广的投入。相对于unreal与crysis这些大牌引擎商,unity3d无论从上手难度,使用成本,开发便捷都要更胜一筹。虽然它在次世代效果上不如前者,但对于市场上大多数游戏,尤其是手机,Pad,以及国内网游来说已经是大大够用了。在目前的市场来看,大型游戏,次世代游戏已经成为少数大厂家的专利。小中型团队由于技术门槛,开发成本,团队磨合度等因素,基本上玩不起。正是这样的特点,它迎合了现在的市场需求,发展迅速。
这次大会主要还是一次商业上的推广活动,对于技术上的讨论大多数只是简单介绍了一下,我简单记录一下,有机会后面可以深入研究下。
-
web player,unity3d在国内的CDN合作是china cache.需要在web前端用js接入来下载web player。同时也和360合作,用户如果使用360浏览器,将自动安装web player。如果需要连接Facebook,可以在asset store上面下载sdk。我们在发布时,应该禁用掉网页右键菜单对于web player版本的选择,以免用户不注意选择了不合适的web player版本。
-
对于Flash,听说在之前的某个版本可以将整个工程自动转换到as脚本,但目前新的版本已经去掉了。而chrome的native client并没有支持的计划,理由是google这个技术目前还没有足够成熟。对于html5,unity目前已经开始支持,会在后面的版本中推出。
-
web cache,这个不同于浏览器的cache,它只缓存asset bundle,并且自动解压到cache里面。这个需要购买。
-
移动平台在unity 4.0以后取消了ARM v6架构的支持。因此如果需要支持这种比较老的设备只能使用4.0以前的版本。
-
代码安全部分。由于ios使用xcode编译成native的执行文件,相对安全。但是在andriod上面由于直接使用脚本,容易破解。官方推荐了两个方法,第一是将脚本打包成text asset二进制流加密后再打包成asset bundle。第二是通过脚本工具对代码进行变量名函数名的混淆。不过个人觉得这两种办法也只是增加了破解的时间而已。
-
一个asset bundle在下载时需要建立8M的内存空间。所以不要同时下载太多的asset bundle,以免内存不足。
-
由于协程在并不是真正的多线程实现,只是利用主线程的碎片时间执行,所以不要大量使用。
-
GIS的数据可以直接倒入unity,不过需要MS&T版本。
-
这次还推出了新的unity2d支持,个人感觉使用很方便。除了在编辑器的支持上比起corona方便许多外,也没有太多新颖的地方。只有一点比较不错,就是sprite meshification功能。简单来说就是将sprite里alpha镂空的部分通过生产更多的三角形数据来做镂空,从而不需要使用alpha镂空,使得渲染上节省pixel filling。
-
还有部分同学提到了移动平台动态更新的问题。官方提出使用asset bundle的方式来解决,感觉说得有点神秘的样子。其实也不过就是将代码打包成资源,利用.net的反射访问。