很多游戏都是在凌晨吉他谱更新的,那么游戏停机更新的时候程序员在干嘛?他们不会也是凌晨起来工作更新游戏吧

为什么 2014 年程序员薪资那么高?
记得我毕业的时候看程序员的工作,那时年薪十万都觉得很高了(2009年毕业)。但是最近招聘程序员,怎么动不动就要大几十万?(首先楼主指互联网行业程序员,其次,楼主创业项目的确对大神们吸引力不够,求大神们轻喷。)
按投票排序
192 个回答
时薪又不高
其实本身这是一个供求关系的问题,这是一个最简单的经济学论题。中国程序员就那么多,而需要程序员的公司多了,那么自然程序员的工资就涨上去了。今年大的环境上,有了这么一些变化。中国新旧经济之间出现了一个杠杆,13年以前,互联网行业只是互联网行业,而其他行业,金融还是金融,通信运营商还是运营商,而现在,发展迅速的移动互联网已经不再是一个单独的行业,移动互联网是要把一切原有的行业都信息化、移动互联网化,比如说嘀嘀快的改变了出租车行业,余额宝拉开了金融业变革的序幕,现在,每一个行业都在往移动互联的方向发展。所以,可以说是,以往只是传统IT行业和互联网行业需要程序员,现在是每一个行业都需要程序员。今年美国资本市场非常好,所以很多公司需要在今年的时间窗口上市。比如说美团,点评,以及已经上市的途牛等,都是这样。对他们来说,拿到大额融资之后,在三四线城市冲业绩,对产品和页面、服务进行大规模的推广是必须的,那么需要大量初级到中级程序员对写业务代码。据了解美团今年校招名额达到数百人。另外,o2o,互联网金融在中国的兴起,让大量传统领域的人进入了TMT行业,这些人由于自身对于互联网和IT的不熟悉,自然要成倍的使用程序员以达到业务目的。另外,企业级服务今年在国内也开始兴起,出现了一批B轮左右的公司,尤其是在CRM、APM、HCM这些领域,由于是兵家必争之地,每家VC和企业都是投入重兵。由于这些项目从技术上来说更难,就需要更多的程序员。今年在美国IPO的公司估计能达到10多个,从年初的久邦数码、爱康、猎豹移动、途牛到京东、阿里等等,投资这些公司的VC拿到回报之后又把钱投到其他创业公司去,大家都有了钱。今年创业公司的平均融资金额是去年的3倍以上,去年每个月融资金额达到1000万美元的公司大概在2个左右,今年是20个左右。这些公司有了钱自然要招人,就可以给程序员开更高的Offer。说点切身感受吧,今年我们校招开出去的Offer被美团、美丽说、eleme截胡的非常多,很多在我们看来基本上是什么都只懂一点的初级程序员拿到了这些公司20K的Offer。最后做一下广告,蓝海讯通招聘PHP、Ruby、Java、Go、iOS程序员,请各位高手一定联系我
不是程序员薪资高,是互联网程序员薪资高,因为互联网火啊,热钱太多花不掉,只能咣咣砸,赶上这波的程序员真是赚到了,这是命好,没办法的。
看傻了,原来以为我只是拖后腿,现在看来内裤都拖掉了。
因为程序员兼顾了生产者和生产资料两个角色。简单点说,传统制造业,工人(成本1)在厂房(成本2)里面操作生产设备(成本3)加工原材料(成本4)制造出产品。而软件行业,程序员(成本1)坐在电脑(成本2)面前,产品就出来了。
在知乎:不问是不是而先问为什么的都是耍流氓。1.你想做程序员搞出大名堂,一线城市是几乎需要的吧?在我家那种小县城,一个刚出来找工作的人,什么工作都可以包含在里面,正常情况下,3000一个月顶天了,那里的房价是:3000一平,在市中心,随便买。在一线城市,目前行情本科出来找BAT里最高的工资也没2W一个月吧(拿Special的大神无视我)?那深圳2W一平你要买新房那必须到关外了,还比较远,比如宝安这边就是到机场了,龙岗都要到2W了(估计已经到了?)。那这样对比一下,你还觉得高吗?不要说还有更多拿更低钱的,钱是用来满足物质基础的,不是用来比的。题主说:记得我毕业的时候看程序员的工作,那时年薪十万都觉得很高了(2009年毕业)。但是最近招聘程序员,怎么动不动就要大几十万?但是:大几十万是多少万?20多W已经很高了现在,那么相对比2009年,现在的物价和房价对比涨幅达到了百分之多少?举个栗子:深圳福田2008年在售楼盘价格基本都在14000元/平方米以上,但是现在呢?具体到底高出了30000多少在深圳过的人都心里有数,呵呵呵呵。所以你觉得工资高了吗?不高,现在出来能拿到20W以上的有多少呢?能达到这个标准的就阿里和网易游戏,如果是本科,那网易游戏基本是能力超过99.99%的人才能进。最终能拿到20W以上的能比您当年拿到10W的人多吗?我不觉得。2.你想找工资高的,BAT是代表吧?看看录取率例如T的实习招聘,按照官方的说法是全国招了1000多,我参加了实习,最后拿到offer的只有50%(比较乐观的数字),那么就是几百号人。T的校招更加的惨烈,光武汉的笔试就有56666人参加,对,就是5W多人,最后全国能留下来的也就几百人,加上实习的也就1000多人。2014应届毕业生人数727万。这比例是多少?人们不会抱怨为什么名校学生的工资待遇高,但是为什么抱怨程序员的工资高?你们看到的是顶尖的程序员,还有千千万万的码农呢!(有些人会说这些所谓”顶尖的程序员“也是干着码农的活,那你也进来干呗)3.市场经济下的正常供需关系现在一家公司开1W,那水平差不多的公司必须至少也是1W别人才愿意去。这么简单的经济学的东西我觉得大家都懂。为什么工资越开越高?就是因为缺人啊!不缺人哪个公司的HR会发神经去乱加工资?4.少上知乎知乎上不是程序员你不好回答问题。知乎上月薪没过万不要评论问题。知乎上年薪没个50W就不要说工资高了。5.程序员真真正正的是拿生命健康在换钱。我之前还觉得趁年轻,能赚一点是一点,但是前段时间愣是把我弄的不要不要的,我才20出头啊!你们感受一下。所以不要以为程序员说这个话是好玩,那说出来的时候心都在滴血啊!
作为100offer程序员拍卖的CEO,在100offer的运营中,我最重要的工作,就是定期对拍卖的数据进行分析与整理,今天有感而发。我基于100offer程序员拍卖网站9月拍卖数据进行分析,总结制作出了一张信息图:《程序员跳槽指南》100offer是家程序员拍卖网站,帮助优秀的程序员匿名求职寻找更棒的工作机会。希望对大家有所帮助,不过数据多分布在一线互联网公司优秀的工程师,相较同龄人可能偏高,欢迎拍砖。
微观经济学的名言,需求与供给决定价格。先说 结论,需求爆发式增长,但是供给增长缓慢。下面是分析。2014年,或者说最近几年,需求与供给端都发生了显著变化。从需求方面看,1. 互联网行业欣欣向荣,2014年福布斯中国富豪榜前三甲,马云,李彦宏,马化腾() 前十大富豪中一半是互联网科技掌门人。2. 创业需求。条件1的刺激使得互联网创业这几年达到了相对高点,愈发健康的融资环境,更多的天使资金支持,相对成熟的互联网用户群体,有一些成熟可借鉴的商业盈利模式(广告,游戏,流量),互联网创业门槛从未像今天这般低。3. 外界进军互联网。近几年来,越来越多非互联网圈子的人,开始谈论互联网思维,越来越多的实体店开始转向电商(苏宁, 国美,淘宝天猫官方旗舰店),金融行业开始切入互联网(互联网金融),微信公共号二维码像企业网站越来越成为标配,以后官方app可能更会比官方网站更加普及。1.2.3点都大大决定了对程序员的需求量大大提高,互联网领军企业如BAT欣欣向荣,会扩大业务,招更多的人。创业火爆会决定了很多资深/优秀的程序员从供给方转到了需求方,降低了供给的同时,提高了需求。外界进入互联网,需要成立新的互联网部门,招更多的程序员,即使是业务外包,也会提高外包的需求量,外包公司也会招更多的程序员。从供求方面看,1. 程序员行业准入门槛高。圈外人士(非互联网人士)想成为程序员难度大大增加。拿公务员为例,其它工作从业人员都可以通过准备考试,通过考试,成为公务员,但即使医生待遇再好,也不太会有人会转行去做医生,程序员也是一样,程序员专业程度强,需要一定时间的专业知识积累以及实际经验积累,排它行强(程序员转行做别的,专业技能会大大折扣)。2. 程序员工作强度大,当然工作强度大跟赚钱不赚钱没有太大关系。工作强度大,会导致几个现象,偶尔打打鸡血是一回事,没有太多人是可以忍受天天(不加班995,加班的话甚至996~997, 每周将近100小时)(高工作强度)几年,甚至十几年的。一段时间(特别是结婚生子)后,几个选择,a.往管理方向发展,
b. 创业,做一票大的
c. 转行。3. 摩尔定律,程序员技术发展革新快。到目前为止,10年~15年经验的程序员最开始接触的是windows编程技术。5年左右的程序员接触的web技术。到目前的移动互联网技术,虽然都是写代码,但是经验的积累更多的是细节的积累。对比高专业技术门槛的其它行业, 如医生,10年经验积攒下来的经验对于常见病例往往可以游刃有余,都可以举出跟以前的某个病例类似,依赖于给出解决方案,大多数高技术门槛都是越老越吃香,越老越轻松。 程序员行业的技术积累优势/经验优势并没有太大,这也导致了程序员天花板的存在,造成了很多优秀的程序员选择转行。10年+程序员跟同样努力的5年+程序员在目前市场并没有太大优势。15年+的程序员跟10年+的程序员在很多公司看来都是一样的。4. 程序员供给,主要来自于校招(社招是从一个公司跳到另外一个公司,从行业整体看,从业人员并没有太大变化),很少有跨行业招程序员(有一些情况是 从小公司,学徒式的开始做简单的程序员工作,然后慢慢成为程序员)。 最近几年,目前校招的供给 并没有大规模的增加,每年全国优秀程序员毕业生就这么多。1和4 决定了程序员的供给无法爆发式增长,2和3决定了程序员的供给以稳定的速率减少。回到题主的题目,为什么2014年的程序员薪资这么高?因为需求端爆发式增长,但是供求基本保持不变,又由于互联网行业的需求端(公司)的“弹性” & 1,(通俗的讲,就是互联网行业足够赚钱,利润率高,舍得给程序员开这么高的工资),所以造成了程序员薪资普涨,以BAT校招的offer来看,基本上是一年一个台阶。为什么程序员跳槽涨薪,因为市场供求一直在改变,市场永远比公司内部制度灵敏。对于未来3~5年 市场预期:移动互联网发展迅敏,如果行业盈利水平没有跟上目前资金投入的话,就会形成泡沫,泡沫破裂后,会有一段时间的低谷,在低谷期,行业会萎缩,市场会低于行业正常发展水平。对于各方面的影响:1. (供给方)正要选择大学专业方向的学生程序员是朝阳行业,除了吃青春饭,职业生涯后期没有太大优势,其它都不错,关键是可预见的将来钱多。2. (供给方)刚工作1-3年的程序员多积攒专业技能,定期去其它公司参加面试,了解自身在市场上的定价以及定位,要求涨薪或者跳槽。3. (供给方)工作5~10年的程序员积攒职业生涯优势,管理能力或者特定技术的专业能力,这两者都是越老越吃香,但是后者容易过时,赌错的话,会对以后发展有影响。程序员转行的话又是另外一个话题。4. (需求方)正打算创业/组团队/开新项目,需要招程序员(如题主)重新评估项目的成本和盈利前景,几年前以前10W能做的项目,目前可能得30W~50W,或者更高。3年前10W能招的不错的校招,现在同样能力的得20W,10W的话可能只能招到3年前5W水平能力的程序员。----------------------分隔线----------------------还有一个原因, 因为软件行业赚钱。现在人们花在软件,消费型电子产品(手机,平板,智能家电,支付宝,互联网金融)的费用和时间增长迅速。 费用可以直接流入互联网公司,时间也可以通过广告转化成收入。这也大大刺激了供给端,
找本经济学入门书看看就懂了,就是成本和供给需求求关系决定的。社会向信息化发展,导致it行业迅猛发展,对软件,网络专业人才需求增多,那么人才供给就不足,软件人力价格就上去,这也会吸引更多的人从事软件开发工作,当人力的供求达到平衡时,从业者数量和平均工资水平就会维持在一个稳定的水平。最终这个价格是多少,取决于机会成本,要成为一名合格的程序员,你需要投资大量的时间精力来不断学习,让自己跟得上技术的进步,才能在这个行业立足下去。如果这个投入高到让你觉得不划算,感觉做程序实在是太苦逼了,有这精力和毅力干点别的啥不比干程序强啊,那自然你会离开这个行业,很多人都跟你一样想法时,大家都会离开这个行业,除非工资水平升高到让多数从业者觉得对得起自己的辛勤付出。否则这个工资就是低了,老板们没任何默契,但就是会不约而同的把工资涨到外人觉得“哇好高!”的水平,因为不这么做就会面临无人可招的困境。结论就是:这就是当代社会的需求(时代需要大量程序员),与成本(成为合格程序员所必要的时间精力投资)。这种教育投资也是是程序行业的壁垒。相比搬砖头和抡大锤的,程序员职位不是说进就能立刻进来的,通常至少要半年的全日制培训。如果大家都觉得程序员工资高,那可以转过来做程序,满大街都是程序员的时候,工资就降下去了,大家又会转去做别的行业。PS:计算机技术涉及面极其广大,甚至渗透到各个传统行业,以至于颠覆了很多传统行业的理念,而互联网只是一个方面。在电信行业,专业技术已经耕耘几十年了,技术上有非常深厚的积累,可以说是几十年科技树的不断延伸才最终达到今天的格局,一个新进入的毕业生,可能要好几年才能基本吃透公司的技术积累,搞清楚自己做的东西到底怎么回事,软件领域很多项目的复杂度是超出常人想象的。不是一朝一夕,就能在这些领域闹革命的,即使是技术革命,也很难出现突然被颠覆的局面,很可能都是缓慢的“和平演变”,那么在这种竞争发展的情况下,显然现有的行业从业者也是处于优势的。类似的我相信很多专业领域都是这种被科技寡头把持的局面。说这个的意思是,技术壁垒也是高收入的一个因素。而且由于行业特征,程序员这种职业从技术上更新速度是最快的,表现上就是计算机技术不断在边缘化各种传统行业。至少20年内,我确信能取代程序员的,只有更年轻的程序员。
这个行业(互联网~软件等)迎合了时代的发展趋势,那么这个行业的从业者就获得的时代发展以及行业发展带来的红利。有人说时薪说加班,可在传统行业,连加班挣高薪的机会都没有啊。当然同意既是生产工具又是生产者的定位。所以从业者平均收入水平远高于其他行业。举个例子。本人汽车行业从业,985211行业内口碑顶尖的大学毕业,08年毕业那年进去国内某著名中日合资主机厂,转正到手一年六万,四年后做到中层管理,一年到手10多万,多那几万还要看公司效益,浮动较大。今年跳槽到某合资整车厂预计一年20多万,但仍有较大不确定性。我高中同学,一起打游戏的哥们,软件行业,二本普通大学普通软件专业毕业后北漂做软件,毕业那年就一年十万,后来先后跳过四个公司,平均一年换一个,从普通技术员到项目经理到项目总监,现在是某创业公司的技术主管,一年五十万。我俩聊天,他说这么多年,真做的东西就是一款xx大战xx的手游,其他的就是琢磨跳槽,行业机会多……有人可能觉得我水平渣,我在加两个我大学同学的例子。大学学霸,毕业直接进入某德系合资公司,转正那时候一年接近20万,然后呢,没有然后了,企业太臃肿上升通道几乎没有,现在,仍然是技术员,一年20多万。特别的“稳定”另一个同学,毕业进去某自主大型变速器公司做备件销售,待遇与我类似。前年辞职创业,利用工作攒下的渠道单干,仍做备件销售。现在一年也30-40万。说说就说散了。我要说的是,软件或者互联网这些行业顺应了时代发展的潮流,正如创业,或者叫做买卖顺应了时代发展的潮流,同样能力的人在这些行业会发现的更好,本身能力强的人也容易找到发挥的舞台。所以说机械穷三代,制造毁一生啊。男怕入错行,不是开玩笑的!
程序员那点钱都留着以后看病用的,你好意思说高?不说了,要吃药了,医生说心平气和。
大多数码农都太乐观了我给你算一笔账 看看程序员的工资和价值说说我所在的游戏行业 如果一个小20多人的小项目 公司每月支出约40万 如果这项目做一年 也就是400多万,但是能创造多少价值呢,按照游戏行业90%的项目失败的概率 嗯 大多数都是亏的,而且亏的还很惨 (一般成了的流水1000万以上,其实都赚不了几个钱(平台分成+广告成本))但是为什么工资高还继续涨呢 ,因为大环境下经济好啊 从页游到手游都是热点 热钱多啊所以作为一个码农
心里想明白最好别看阿里市值啥的 没啥意义 且不说程序员千千万 阿里占多少 一些创业互联网工资高真的是靠自己的创造的价值?无非就是在烧投资人的钱罢了 大环境使然我不认为学其他专业之类的同学比我差 比我轻松 但是工资不及我一半,无非是大环境下 我恰巧是个和这个时代产生共振的一份子而已
因为程序员还得【背黑锅】啊,钱哪有那么好赚啊。
现在凌晨12点过了,我的2个程序员室友还没回来,只留我独守空房。你TM敢和程序员说工资高
当然了,那么多人一个星期干80个小时呢。所以你们要先把他们的工资除以二,然后再跟别人比。
主要是看什么技术层次的程序员,很多程序员月薪还是低于10k的。但程序员属于高脑力高体力工作,需要知识基础积淀和实践,培养成本也是相对较高。以前的工资不景气其实是有一定的市场畸形,现在才是回归正常。建议题主可以趁这个时期多招聘程序员。着重点在于项目经验。如果公司有一定规模,可以培养应届生。着重点在计算机基础扎实程度(可通过笔试,如数据结构),可成长性,工作热情等。
果然不能回国啊,在米国实习生就月薪5000刀起...
我觉得程序猿没有10K以上的薪水都是老板在耍流氓,尤其是前端开发,什么css3,less,sass,HTML5,JavaScript,php,Python,数据库,jquery,数据结构和算法,PS,flash,切图,浏览器兼容性,SEO,YuI,移动端web,backbone.JS,angular.JS,git操作,grunt,nginx,不说了,说多了反正我也不会…
也就互联网高,整个软件行业远远没那么高。正好今天看了研发部门的加班统计,月加班100小时是主流,70小时以下的都很少,50小时以下的要么是出差了,要么是请过长假。100小时啊同志们,按照一天8小时算,整整多上了13天班啊。一个月一共才22天工作日。
趁着今年便宜赶紧大规模招聘吧,未来几年会加速上涨的。程序员的工资长期被压低,现在只是在恢复正常而已。列几个数据:2000年,软件业产值规模是240亿2013年,软件业产值规模是3万亿2000年,软件业从业人员 15 万人2013年,软件业从业人员 470万人这些数据不保证精确,看下数量级就好了。这还只是软件业,还有那个相比2000年不知道涨了几千倍的互联网业呢。另外,华为 联想这种硬件公司,很大一部分价值也是程序员创造的。可见程序员创造的价值一直在高速增长,其实薪水涨幅要低得多呢。9月14日停机维护更新时间调整至15日更新_图文攻略_全通关攻略_高分攻略_百度攻略
热血传奇手机版9月14日停机更新时间调整至15日停机更新,那么本次新版本的更新内容具体有哪些了?停机维护后具体有什么好玩的吗?下面小编就为大家介绍下。9月11日《龙争虎斗》大版本更新后,我们收集了大家提出的很多很好的意见和建议,并在周末紧急完成了一个调优版本,原计划将在9月14日周一凌晨02:00-04:00全区停服维护。对于大家的反馈,热血传奇运营和研发团队非常重视,希望尽快修复影响游戏体验的BUG,并提高一些玩法中的产出。但是在版本最终验收的阶段,我们发现了一个比较影响用户体验的随机性问题。秉承为玩家带来最好游戏体验的原则,原计划9月14日02:00-04:00停服更新计划延期至9月15日02:00-04:00,现在开发团队正在连夜修复中。给您造成的不便,我们致以诚挚的歉意!停服原因:停服维护停服时间:9月15日02:00-04:00,结束时间根据工作进度将可能提前或延后停服范围:全区全服玩家影响:玩家进入游戏时,提示服务器正在维护反馈渠道:如果您更新版本后出现【异常BUG】,请【点击这里】反馈。游戏更新:BUG修复:1.修复人物移动卡顿和概率花屏的问题2.修复某些特殊属性如暴击、闪避显示“100%”的问题3.修复道士的套装不显示套装属性的问题4.修复无法看到其他玩家装备熔炼等级的问题5.修复战队排行默认列表显示为空的问题6.修复50级武器分解无法获得熔炼精华的问题,修复后可正常获得熔炼精华7.修复战士武器-裁决之杖熔炼到黄金档会增加爆击数值的错误(对于已经熔炼到黄金档及以上的用户将进行补偿,请留意系统邮件。)8.为防止普通玩家受骗,修复可以在聊天框中输入回车、文字颜色等命令的问题产出调整:1、世界BOSS产出增加:骷髅精灵和沃玛教主将掉落铁矿石;白野猪和邪恶钳虫将掉落银矿石;祖玛教主和虹魔教主将掉落金矿石;2、地下夺宝将有几率掉落熔炼精华和熔炼精华包;3、怪物攻城将大幅提升祝福油掉落几率更多关于热血传奇手机版的攻略与资讯,请关注百度攻略&口袋巴士热血传奇手机版专区。(百度攻略&口袋巴士热血传奇手机版玩家QQ群:)
热血传奇手游-相关攻略推荐
热血传奇手游-新手攻略
热血传奇手游-战士攻略
热血传奇手游-道士攻略
热血传奇手游-法师攻略Unity3D游戏开发之Lua与游戏的不解之缘终结篇:UniLua热更新完全解读 - 推酷
Unity3D游戏开发之Lua与游戏的不解之缘终结篇:UniLua热更新完全解读
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
喜欢我的博客请记住我的名字: 秦元培 ,我的博客地址是
转载请注明出处,本文作者: 秦元培 , 本文出处:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是
。在之前的三篇系列文章《Unity3D游戏开发之Lua与游戏的不解之缘》中,博主带领大家一起领略了Lua在游戏开发中强大而迷人的作用,通过UniLua这个开源项目我们将Lua引入了Unity3D的世界,并且在此基础上我们写出了Lua'与Unity3D交互的第一个示例程序。今天呢,我们来说说Unity3D配合AssetBundle和;Lua实现热更新。
首先,我们来了解一下什么是热更新吧!所谓热更新是指在不停机的状态下对系统进行更改,例如我们的Windows可以在不重启的状态下完成补丁的更新、Web服务器在 不重启的前提下完成对数据和文件的替换等都是热更新的经典实例。那么对于Unity3D而言,什么是热更新呢?如果我们最终发布的Unity3D游戏是一个Web游戏,那么每次游戏加载的过程中实现对资源代码的更新就是热更新。如果我们最终发布的Unity3D游戏是一个客户端游戏,那么我们在重重启客户端以后实现对资源代码的更新就是热更新。为什么这么说呢?因为Web游戏需要保证玩家能够及时快速地进入游戏,因此在游戏加载完之前,我们必须完成对游戏资源和代码的更新。可是对于客户端游戏而言,玩家可以在等待本次更新结束后再进入游戏,而且大部分的客户端程序在更新完后都会要求玩家重启客户端,所以对于客户端游戏而言,热更新并非是严格意义上的热更新。那么,我们为什么要进行热更新呢?答案是为了缩短用户获取新版本客户端的流程、改进用户体验。这其实就是博主在前文中提到的传统单机游戏依靠光盘载体进行发售所面临的问题,玩家为了获取最新版本的游戏,需要下载全新的客户端并将它安装到计算机或者手机设备上。在互联网产品开发中有一种称为快速迭代的理念,试想如果我们每次对客户端进行局部的调整,就需要玩家去下载新版本的客户端,试问这样的用户体验真得能让用户满意吗?所以现在为了方便用户、留住用户、进而从留住的用户身上赚到钱,我们总能在游戏产品中找到热更新的影子。我们知道在Unity3D中可以通过AssetBundle来实现对游戏中资源的更新,在
这篇文章中作者janeky已经给出了较为完美地解决方案,因为博主使用的Unity3D免费版无法使用AssetBundle的功能,而博主本人不愿意使用破解版,因为这是一个程序员的良心,所以本文更多的是从代码更新的这个角度来讲Unity3D的热更新,对于资源的热更新大家建议大家还是去看janeky的这篇文章吧。好了,下面正式开始Unity3D代码级的热更新之旅!
在Unity官方的
中官方给出了一种基于反射的思路,即将C#脚本存储为文本文件,然后将其转化为byte字节,再通过反射技术取得该类型及其方法。理论上这样当然没有问题,可是我们知道由于IOS是一个封闭的系统,设计者出于安全的考虑不允许在该平台下使用反射技术。那么问题来了,反射并不是一个完美地解决方案。关于反射技术实现Unity3D的热更新,大家可以参考这篇文章:
。好了,下面我们来说说博主是如何通过Lua实现Unity3D的热更新的吧。我们知道在Lua提供的C#接口中有一个DoString()的方法,该方法可以直接利用Lua虚拟机执行字符串中的脚本。所以,我们可以通过在本地读取Lua脚本来执行脚本中的命令,如果我们脚本中的命令可以直接对Unity3D进行操作,那么我们就可以通过Lua脚本来更新游戏中的代码逻辑。那么,我们怎么能让Lua脚本操作Unity3D呢?在前一篇文章中,我们介绍了一种Require的方法,该方法可以将C#库引入到Lua脚本中并通过Lua来执行C#库中的方法。顺着这样的思路,博主便有了下面的设想:
在这个设想中,我们首先需要将Unity API封装成一个C#类库,在这个类库中我们将会涉及动态加载场景和动态创建场景,因为我们更新游戏的逻辑的时候将会用到这些方法。这些方法通过封装后我们便可以在Lua脚本通过Require方式来引用,进而我们就可以通过Lua脚本来动态地进行设计。我们设计一个固定的位置来存储Lua脚本更新文件,这样我们只需要对比本地版本和服务器版本是否相同就可以知道我们是否需要更新。这里我们通过WWW来从远程服务器上下载最新的Lua脚本更新文件,下载下来的Lua脚本处于项目外部,我们无法使用Resource.Load()这样的方法来加载,可是我们可以通过WWW来加载一个本地文件,这样我们就实现了Lua脚本文件的更新。当然,我们可以使用AssetBundle来更新Lua脚本文件,可是博主的免费版不支持AssetBundle,所以博主想出了这样一个曲线救国的方法。当Lua脚本文件更新后,我们就可以在游戏主逻辑里通过DoString()方法来执行脚本文件中的代码。在游戏主逻辑里主要的任务是比较当前版本号和服务器版本号来判断是否需要更新,如果需要更新就下载Lua脚本更新文件然后执行脚本中的代码,这样我们就实现了客户端程序的更新。好了,下面我们继续以前一篇文章中的项目为例来将博主的这个设想变成现实。
首先,我们在CSharpLib.cs这个类中增加下面两个方法并完成方法的注册:
/// &summary&
/// 设置场景中物体的坐标
/// &/summary&
/// &returns&返回当前坐标&/returns&
/// &param name=&lua&&Lua.&/param&
public static int SetPosition(ILuaState lua)
//物体的名称
string mName=lua.L_CheckString(1);
//传入参数x,y,z
float mX=(float)lua.L_CheckNumber(2);
float mY=(float)lua.L_CheckNumber(3);
float mZ=(float)lua.L_CheckNumber(4);
//获取物体
GameObject go=GameObject.Find(mName);
//获取Transform
Transform mTrans=go.
//设置游戏体的位置
mTrans.position=new Vector3(mX,mY,mZ);
//返回游戏体当前坐标
lua.PushNumber(mTrans.position.x);
lua.PushNumber(mTrans.position.y);
lua.PushNumber(mTrans.position.z);
/// &summary&
/// 使用本地预设创建一个物体
/// &/summary&
/// &returns&The resource.&/returns&
/// &param name=&lua&&Lua.&/param&
public static int CreateResource(ILuaState lua)
//传入资源名称
string mName=lua.L_CheckString(1);
//加载本地资源
GameObject go=(GameObject)Resources.Load(mName);
//传入坐标参数x,y,z
float mX=(float)lua.L_CheckNumber(2);
float mY=(float)lua.L_CheckNumber(3);
float mZ=(float)lua.L_CheckNumber(4);
//创建一个新物体
Object.Instantiate(go,new Vector3(mX,mY,mZ),Quaternion.identity);
//返回该物体的名称
lua.PushString(go.name);
好了,这样我们就完成了一个简单的C#类库,下面我们来在主逻辑代码中增加一个更新脚本的方法UpdateScripts():
void UpdateScript()
StartCoroutine(&Download&);
/// &summary&
/// 下载Lua脚本更新文件
/// &/summary&
IEnumerator Download()
//从本地加载Lua脚本更新文件,假设文件已经从服务器下载下来
WWW _WWW=new WWW(mUpdateFilesPath);
yield return _WWW;
//读取服务器版本
mLua.L_DoString(_WWW.text);
这里的代码逻辑很简单,就是读取脚本更新本地文件然后执行脚本,其中mUpdateFilePath是脚本更新文件路径:
//初始化路径
mUpdateFilesPath=&file://D:\\lua_update.txt&;
这里博主设想的是在本地存储一个版本号,每次更新前先获取服务器端的版本号,如果两个版本号不同则需要从服务器上下载更新脚本文件进行更新。不过博主这里没有想到什么好方法来获取版本号,所以这里就只写了更新。那么,我们来看看更新脚本文件都做了哪些事情吧!
local csharplib=require&CSharpLib.cs&
csharplib.SetPosition(&Cube&,2,1,0)
csharplib.CreateResource(&Sphere&,0,0,0)
csharplib.CreateResource(&Cube&,1,1,0)
首先我们通过Require引入了CSharpLib.cs 这个类库,接下来,我们将场景中名称为Cube的物体的位置设为(2,1,0)、 利用本地的两个Prefab资源创建了一个Cube和一个Sphere。那么,我们的设想能不能实现呢?我们一起来看最终效果吧!
执行Lua脚本更新前:
如我们所愿,Lua脚本成功地对场景实现了一次更新。可能有的朋友会问,这里用的是本地资源,如果我想用服务器上的资源怎么办呢?答案是博主最不愿意提及的AssetBundle,即利用AssetBundle加载远程资源,然后用Lua实现更新,这些逻辑可以添加到CSharpLib这个类库中。大家可以设想一下,如果有一天我们能够将Unity的所有方法都封装起来,那么我们就可以直接用Lua来创建场景了,如果要更新客户端,只要更换Lua文件就可以了,怎么样是不是很简单呢?可是Unity不开源啊,这些想法终究只是想法啦。好了,今天的内容就是这样了,欢迎大家关注我的博客,谢谢大家!
箴言: 成熟,不是你绷起脸,显得多么老道;不是你知道多少大是大非,懂得多少大道理,而是你能理解身边发生的小事都可能有它的不得已。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
喜欢我的博客请记住我的名字: 秦元培 ,我的博客地址是
转载请注明出处,本文作者: 秦元培 , 本文出处:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
已发表评论数()
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
排版有问题
没有分页内容
视频无法显示
图片无法显示

我要回帖

更多关于 走在凌晨的影子 的文章

 

随机推荐