为什么unity开发的手机游戏玩unity的游戏很卡

unity制作的场景导出apk在手机里运行很卡_百度知道Unity3D开发手机网络游戏 前期策划准备工作
Unity3D开发手机网络游戏 前期策划准备工作
Unity3d 简介&&&& Unity3d是时下比较流行的一款游戏引擎,流行是因为用它做游戏很方便,无论是3d还是2d都会有非常好的效果,即便某些朋友不懂编程,也可以通过Unity自带的组件做出一些简单的诸如三维视频游戏、建筑可视化、实时三维动画等类型的小作品。在正式发布前,Unity经历的多年的开发阶段,Gooball在2005三月发布,运用了Unity的预发售版本 开发。Unity从出道到现在已有8年历史,有很多优秀的作品都是用Unity做的,诸如《神庙逃亡》、《绝代双骄》、《坦克英雄》、《将魂三国》、《梦幻国度2》、《新仙剑Online》以及《纵横无双》等。网络游戏简介&&& 网络游戏又称为MMOG(Massivemultiplayeronlinegame)。通常只要某一游戏的服务器端到客户端连线玩家数量超过1000人即可算作大型多人在线游戏,但是狭义上必须有大量玩家处于同一“游戏世界”的游戏才能称之为大型多人在线游戏。&&& 目前网络游戏的分类主要如下:&&&& 1.从使用形式上进行分类:&&& 浏览器形式和客户端形式。基于浏览器的游戏,也就是通常说到的网页游戏,又称为WEB游戏,它不用下载客户端,任何地方任何时间任何一台能上网的电脑快乐的游戏,尤其适合上班族。其类型及题材也非常丰富,典型的类型有角色扮演(天书奇谭)、战争策略(热血三国)、社区养成(猫游记)、SNS(开心农场)等。 而对于客户端形式这一种类型是由公司所架设的服务器来提供游戏,而玩家们则是由公司所提供的客户端来连上公司服务器以进行游戏,而现在称之为网络游戏的大都属于此类型。此类游戏的特征是大多数玩家都会有一个专属于自己的角色(虚拟身份),而一切存盘以及游戏资讯均记录在服务端。此类游戏大部分来自欧美以及亚洲地区,这类型游戏有World of Warcraft(魔兽世界)(美)、战地之王(韩国)、EVE Online(冰岛)、战地(Battlefield)(瑞典)、信长之野望Online(日本)、天堂2(韩国)、梦幻西游(中国)等等。&&& 2.从游戏种类上进行分类:&& 棋牌类休闲网络游戏:即登陆网络服务商提供的游戏平台后,进行双人或多人对弈,如纸牌、象棋等,提供此类游戏的公司主要有腾讯、联众、新浪等。网络对战类游戏 :即玩家通过安装市场上销售的支持局域网对战功能游戏,通过网络中间服务器,实现对战,如CS、星际争霸、魔兽争霸等,主要的网络平台有盛大、腾讯、浩方等。角色扮演类大型网上游戏:即RPG类,通过扮演某一角色,通过任务的执行,使其提升等级,等到宝物等,如大话西游、传奇等,提供此类平台的主要有盛大等。&& 3.从游戏模式上进行分类:&&&& 这样分类比较多,主要有:一、 MMORPG-大型多人角色扮演类游戏,如时下火爆的《DNF》《DN》《诛仙3》等。二、MMOFPS-大型多人第一人称射击游戏,如《CF》等。三、MMOKTS-大型多人及时策略游戏,这类游戏目前主要以浏览器形式发展而非客户端,如《破碎银河系》等。 四、MMODG-大型多人网络舞蹈游戏,《劲舞团》已经火了很多年了。 五、MMOMG-大型多人网络经营类游戏,这类游戏也是主要依托浏览器形式发展,如《Hattrick》等游戏。 六、MMOR-大型多人网络竞速类游戏,如《跑跑卡丁车》等游戏。 七、MMOTG-大型多人网络大亨类游戏,代表作为《网络大富翁》。 八、MMOSG-大型多人网络体育类游戏,以《街头篮球》为代表。网络游戏的架构:&&&& 一、PTP(Peer-to-Peer)即在多个玩家参与的游戏中,各玩家之间采用Peer-to-Peer的直接通信方式。在网络通信服务的形式上,一般采用浮动服务器的形式,即其中一个玩家的机器既是客户端,又扮演服务器的角色,一般由创建游戏局的玩家担任服务器(主机)。很多对战型的RTS网络游戏都采用这种结构。&&&& 二、基于游戏大厅代理的结构,通过会话大厅(lobby)结构,为不同玩家牵线搭桥,既直接管理客户端,也管理游戏局,是回合制网络游戏的常见类型&&&& 三、网络游戏的最典型的结构是C/S结构,特别适合于多人在线游戏,如RPG,成千上万人进行同一场游戏。服务器上有完整的游戏世界模型,玩家在客户端去观察这个世界,并与之互动。C/S结 构的优点是能够充分发挥客户端计算机的处理能力,很多工作可以在客户端处理后再提交给服务器,使得客户端响应速度快。对于网络游戏来讲,这是十分关键的。 其缺点就是网络游戏的升级比较麻烦,每次升级需要客户端下载体积庞大的更新软件,然后进行安装,对于一些带宽并不是十分充足的用户而言,升级就成了游戏的梦魇。不过,良好的客户端程序框架设计完全可以避免升级时下载庞大的更新软件。比如,客户端软件可以把场景定义文件独立出来,客户端程序在运行时动态加载 场景定义文件。这样,当网络游戏的设计者发现需要增加游戏场景时,他只需要更新一个场景定义文件就可以了,当然还需要一些必需的场景资源文件,如新增加的 图像、背景音效等。使用Unity开发简单的网络游戏&&& 网络游戏和单机游戏最大的区别就是网络游戏把单机游戏的逻辑判断移到了服务器端。当客户端向服务器发出一个请求后,比如说行走,服务器收到客户端发来的这个数据包,然后读出内容,进行逻辑判断处理,然后把结果从新返回给客户端。客户端收到服务器的回复后,开始进行屏幕渲染,于是就出现了行走的动画了。逻辑判断在服务器端,客户端只负责渲染。把逻辑放在服务器端有一个很明显的好处,就是防止第三方修改数据,即降低玩家“开挂”的可能性。使用Unity进行网络游戏开发,最好不要用Unity自带的NetworkView,选择socket更好,理由如下:(我这里借鉴A哥所总结)& 一、unity network 需要向unity的masterserver服务器注册我们的服务,而socket服务由开发者自己定义& 二、采用socket想要共享哪些数据更加灵活 而network显然是没有这么方便& 三、网络占用 socket在需要的时候 只需要传输开发者定义好的需要交互的数据即可 network则是整个的实时同步 网络占用会高出不少& 四、network是类似于p2p的客户端直连共享模式 需要nat穿透 用户的设备不一定支持。
发表评论:
TA的最新馆藏unity发安卓游戏包为什么会卡_百度知道Unity3D是怎么提升游戏运行效率的?
Unity3D可以用C#和JS作为开发语言,这两种语言开发效率是蛮高,但运行效率应该不会比Java好多少吧?PC游戏据说为了性能,大多是用C++开发的;Unity3D主打是手机游戏,却选择了C#/JS;难道它们有什么黑科技?
谁说Unity3D不是C++的?对性能特别敏感的部分,Unity已经用C++帮你做了,C#和JS主要用途是写游戏逻辑,而不是复杂的计算。一般的游戏的逻辑部分很少会是性能瓶颈哦对,U3D后续版本引入了IL2CPP
针对这个问题,Unity使用C#、JS和Boo这三种语言来作为开发语言,首先是Mono这个跨平台工具决定的,即Mono支持什么样的语言,从官方文档中你可以了解到Mono支持C#、Visual Basic、JavaScript、Python、Boo等语言,而在这其中相对优秀的C#毫无疑问地成为了首选的开发语言。Unity本身采用C++写的,脚本语言这种形式在游戏开发中是特别常见的,因为脚本语言存在的意义是为了提高开发效率,就像cocos2d-X引擎同时存在C++、JavaScript、Lua三种语言的绑定,从效率上来讲C++更高效,但是从用户友好和开发效率上来讲,Lua和JavaScript显然更好。所以在这个问题上,主要有两点:Mono决定了Unity选择C#作为开发语言,C#可以降低引擎门槛、提高开发效率。在目前这样一个硬件能力过剩的时代,我觉得稍微牺牲点性能来满足快速迭代的开发需求,比过度追求性能上的优化有意义的多。天下武功,唯快不破,C++显然是无法满足国内手游短、平、快的市场现状的啊……对Java我想说,如果Java有意向在Mono上跑,我们可以考虑帮你们移植,毕竟你们的JVM被改得连你们都不认识了:(逃
据本文发稿时, Unity3D已经引入了IL2CPP技术, 性能提高数倍. 而且可以跨过mono的VM跨平台兼容性维护问题C#比java晚出, MS在开发过程中各种跪舔开发者, 据说一个类库的函数命名, 都是问开发者. 怎么爽怎么来. 性能自然比java要优越很多. 别忘了, C#的设计者也是Delphi的设计者虽然mono不是MS出的, 但是从社区统计数据来看, 也绝对不是java能比的. 你看Unity3D出来后, 是吐槽C#性能低的多还是吐槽安卓java效率低的多(笑话)io永远是程序的性能屏障, Unity3D在这块帮你用native方式解决了.所以C#那点性能损失算不了啥
你可以去看leetcode上面Java和C#的运行时间分布表,然后再来说什么【运行效率应该不会比Java好多少吧】针对你这个问题,大概就是,现在的设备对于unity的游戏来说,计算资源还是过剩的,所以不需要C++也可以。同理也没人会用unity开发Crysis的。
HTML5 的 WebGL 我们还拿来做 Ray Tracing Assignment 呢…把初始化和一些计算放 JS 里,剩下的交给 shader,带 procedural texture 的,算上 reflection 和 refraction 照样轻松做到 60 fps……嘛当然我更喜欢用 C++ 来写 OpenGL 不过教授不让啊…话说 C# 应该比 Java 快多了吧。
用c#写的i++和c写的i++,编译后的机器指令哪个更快?实际测试,il2cpp之后,同样的代码,非但没有提高性能,反而降低了性能,而且还有很多bug。unity不知道为啥要搞这个脑残项目,可能是要用到某个c++转js的项目来实现webgl,提高性能绝对是扯淡。把il转成c++,实现不是那么简单,没有找到最佳实现,肯定会浪费性能的。很多人以为,arm指令集会比intel指令集有功耗优势,实际上不是。很多人以为,c++一定比c#快,其实也不是。有些操作c#快,有些c++快,编译器优化方向不同而已。没有哪个是绝对优势。拿一大段代码用不同语言实现去比较编程语言是脑袋电路不通。两团乱麻哪个更直?逻辑正常应该用单项操作去比较。比如字符串操作,整数运算,浮点运算,内存分配以及回收。不用说也知道内存管理是gc语言的长项。经过测试,c++在浮点运算上领先,c#字符串处理较快。不信邪的人,可以用c#和c分别写个Fibonacci的递归实现,看看是哪个快。我记得以前是mono比c#快,然后是c++,最后是java。c#如果做了native就跟mono速度差不多。拿启动时间相差零点几秒来证明是无聊。运行速度快就行了。启动差0.1秒感觉得出来吗。c++编译还要几个小时呢。真做事情,肯定是尽量用c#和java,没有办法的时候用c++和c。性能差不多,花钱越少越好。吹牛嘛,用汇编big更高。
现在手游开发重视的是开发效率,比如现在流行的是cocos2dx+lua,而不是直接使用c++。因为有人员门槛、开发效率、热更新等优势。而逻辑产生的性能问题都是很容易定位和解决的。实际核心图形、物理相关的内容,Unity是使用c++,而且肯定做过很多的性能优化。
用C#和js主要还是为了提高开发效率,而且js入门快,做前端的也可以写。unity主要的优势在于中小型游戏,一般硬件资源是过剩的,所以语言本身的效率不是很重要
如轮子哥说的,现在来说,计算资源是过剩的。最重要是的在内存上的优化,gpu上的优化。
已有帐号?
无法登录?
社交帐号登录}

我要回帖

更多关于 unity游戏玩不了 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信