您的位置:首页 > 移动开发 > Unity3D

聊一下近况,研究unity的flash发布功能

2013-03-11 14:46 357 查看
      前段时间在博客写了几篇简单的教程,受到了一些朋友的关注,非常感谢各位。不过最近都没再上来写东西了。这是因为最近我又忙起来了,暂时没有时间写新的东西。而且其实我写这些所谓的教程都是凭兴趣写的,没什么目的性,如果大家对于某个方面感兴趣,而我又刚好懂的话,我可以抽时间介绍一下。

        最近我都在研究unity做flash项目的方法。从unity3.5开始,unity已经可以发布swf格式了。很多朋友估计会眼前一亮,在猜想假如unity能像发布手机平台之类的直接发布flash,那以后做网页游戏就会很方便了。但实际上,事情是没有这么理想的。unity的很多功能都不能在flash里面支持。

        可能有朋友会认为,因为现在unity的flash发布是预览版本,可能在正式版本里面很多功能会得到支持。首先,不能排除这个可能性,有些功能是可以得到支持的。像www加载功能和AssetBundle 功能,就是从unity3.5.2开始才支持的。然后,我们其实不能过分的乐观。因为flash本身存在了很多的特性和安全机制,而导致了有些unity的功能是不可能在flash导出的时候使用的。

        举个简单的例子。比如www加载功能,在flash用起来是不能像在unity本身那么好的。因为unity本身在使用www的时候是使用了协同程序,也就是说开了线程来后台加载的。而flash本身是没有线程这个说法的,所以假如unity发布的swf需要开线程做协同程序,将会把唯一的进程堵死。具体的情况是,当你加载www的时候,整个swf会卡住。

        再举个例子。很多用unity开发的朋友喜欢用www来加载本地资源。但这对于发布swf之后,是做不到的。因为flash本身的安全机制问题,他只能加载服务器上面的资源,不能加载本地的资源的。所以假如你想有些swf在脱离网络的情况下在本地运行,只能在本机架设一个服务器来加载资源了。

        就像unity官方搞的那次flash小游戏大赛一样,假如你只是做一些简单的不需要联网或者外部加载资源的小游戏,unity是完全可以胜任的。

        我上面指出了那么多unity发布flash的缺点,是不是就是说unity不能做大型的flash项目呢?当然不是了,如果是这样,unity官方搞flash发布不是脑袋抽风了?实际上,unity已经把很多的情况考虑进去了。有些功能是永远不会支持的,像socket,有些功能是会支持得没那么好。但这些功能,我们可以通过AS3去解决。由于外部的flash可以加载unity发布的swf,也由于swf和网页JS之间可以交互,所以,一般的unity不能直接实现的功能,你可以选择交给AS3去处理,然后把结果返回到unity处理就行了。而且可以在unity项目里面建立ActionScript文件夹,放置AS3的脚本,用C#之类的映射就能直接调用AS3脚本。这样一来,说不定你的项目由于AS3的加入,会解决了很多unity的弱点,比如UI。

        目前unity4.0还没有正式发布,我测试现有的版本存在了几个比较常用的问题,供大家参考一下:

1、不能开线程,所以www加载会卡

2、AssetBundle在导出的时候需要指定flash平台,不然的话加载不上

3、抗锯齿基本无效

4、某些镜头特效和即使影子一起用会出错

5、一部分shader不支持,比如自带的叶子shader

6、文字输入和显示会有问题。这是最严重的问题,很多字符不能输入。

其实大家遇到不能用或者有问题的时候,可以参考api文档,里面有说明哪些功能可以用,哪些不能。而它说了可以的,就一定可以的。之前他说AssetBundle 可以使用,我怎么试都不行,以为是版本问题,后来才发现是因为导出AssetBundle 的时候没有指定flash平台。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: