游戏引擎 Unity 的unity5从入门到精通易精通难体现在哪?为什么

来使用哥开发的slua吧,
&a href=&http://www.slua.net& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&slua.net&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&br&&br&开源, 和ulua相比快的没有朋友,
没有反射,没有额外gc alloc,采用静态代码生成, 可以用于游戏核心逻辑, 完整支持4.6+ UI系统.&br&&br&同ulua/tolua的性能对比,请看这里 &a href=&/post/164& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&slua benchmark&i class=&icon-external&&&/i&&/a&&br&&br&20万次 测试用例 数据如下(slua0.6 vs cstolua1.7, slua0.7再次飙升速度)&br&&img src=&/42f688af7ec13ef59bd9d_b.jpg& data-rawwidth=&650& data-rawheight=&285& class=&origin_image zh-lightbox-thumb& width=&650& data-original=&/42f688af7ec13ef59bd9d_r.jpg&&&br&slua 0.6 对比 slua 0.7&br&&img src=&/7da4d8bf3f433bcac5d5ced25f9c1879_b.jpg& data-rawwidth=&649& data-rawheight=&324& class=&origin_image zh-lightbox-thumb& width=&649& data-original=&/7da4d8bf3f433bcac5d5ced25f9c1879_r.jpg&&&br&&br&主要功能如下:&ul&&li&速度就是快, 这是slua的核心目标&/li&&li&避免额外gc alloc, 去掉性能杀手&/li&&li&90%以上UnityEngine接口导出(主要去掉了flash,平台相关的接口);&/li&&li&100% UnityEngine.UI接口导出 (4.6+ 版本)&/li&&li&支持UnityEvent/UnityAction, 使用lua function&/li&&li&支持delegation,使用lua function (支持iOS)&/li&&li&支持coroutine&/li&&li&支持导出自定义类&/li&&li&所有enum导出为number&/li&&li&所有数组返回值导出为lua table&/li&&li&使用luajit 64bit(完整支持armv7,armv7s,arm64), 可用lua5.3替换&/li&&li&支持il2cpp/il2cpp 64&/li&&/ul&
来使用哥开发的slua吧, 开源, 和ulua相比快的没有朋友, 没有反射,没有额外gc alloc,采用静态代码生成, 可以用于游戏核心逻辑, 完整支持4.6+ UI系统.同ulua/tolua的性能对比,请看这里 20万次 测试用例 数据如下(slua0.6 v…
他们终于不自己制作引擎了做那些烂暴的画面了,可喜可贺。
他们终于不自己制作引擎了做那些烂暴的画面了,可喜可贺。
来自子话题:
这绝对会是全世界有史以来最大规模的攻击事件了,何其高的借力打力。推测一下,他一定能青史留名。&br&&br&等完结后写篇文好了,标题叫《硅幕坠落》
这绝对会是全世界有史以来最大规模的攻击事件了,何其高的借力打力。推测一下,他一定能青史留名。等完结后写篇文好了,标题叫《硅幕坠落》
上图喽~&br&&img src=&/a20fe575ab0fac56dd9c53_b.jpg& data-rawwidth=&553& data-rawheight=&419& class=&origin_image zh-lightbox-thumb& width=&553& data-original=&/a20fe575ab0fac56dd9c53_r.jpg&&&br&这是这十几天写的soft pipeline渲染的立方体&br&&img src=&/6dbdb206d6d351d591c82b96c4d98a10_b.jpg& data-rawwidth=&498& data-rawheight=&395& class=&origin_image zh-lightbox-thumb& width=&498& data-original=&/6dbdb206d6d351d591c82b96c4d98a10_r.jpg&&黑色三角形是鼠标点选效果,嗯,精确度高高?~&br&&img src=&/ef0b56f91b16e4f7db88e_b.jpg& data-rawwidth=&566& data-rawheight=&445& class=&origin_image zh-lightbox-thumb& width=&566& data-original=&/ef0b56f91b16e4f7db88e_r.jpg&&左面三角形使用透视纹理映射,右面的是线性映射,还是左面的给力啊(尼玛,计算量翻了好几倍啊~!)&br&为了感谢大家的谬赞,来~小的们,把新出炉的干货给各位兄台抬上来~&br&(1)&a href=&http://blog.csdn.net/popy007/article/category/640562& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&blog.csdn.net/popy007/a&/span&&span class=&invisible&&rticle/category/640562&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&
这大牛把几个关键的矩阵用初中生都能看懂的数学知识给推!!倒!!了!!受益良多啊。唯一的一点点小遗憾是没有把CVV裁剪介绍一下,导致在顶点乘以透视矩阵后,进行投影操作之前出现了一段真空期,下面提到的《计算机图形学(opengl版)》说明了这个问题。但是大牛的光环还是那么耀眼!&br&(2)目前我看到的介绍流水线的资料中,在推导摄像机矩阵时,基本上没有提到一个很重要的线性代数上的基本概念,如下:&br&
world coordinate
是世界坐标系
&br&&p&  coordinate frame 是局部坐标系 也叫坐标架 类似于物体坐标系,或者摄像机坐标。&/p&&p& 
第一部分:这里用到得一个线性代数里的概念 叫做
过度矩阵: 从一个坐标基 到 另个一坐标基之间有一个过度矩阵
如 从坐标基A到坐标基B
有个过度矩阵C
则有 A*C = B 。如果有一个向量在世界坐标系下的坐标为a,有两在世界坐标系下的坐标基(coordinate frame)A和B,且从A到B的过度矩阵为C,a在A和B两个坐标基下的坐标是a‘和b‘。那么有&/p&&p&a = A*a‘ = B*b‘
由 A*C=B 带入得
A*a‘ = B*b‘=A*C *b‘
其中 A为可逆矩阵 有 a‘ = C*b‘。这样就得到了两个在不同坐标基,且由A可逆还可知C = B*(A-1)。(A-1)时A矩阵的逆。&/p&&p&&a href=&/BlackWalnut/articles/4194956.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/BlackWalnut&/span&&span class=&invisible&&/articles/4194956.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&
第二部分在上面的链接里,由于公式编辑不下来,看着太疼了。&/p&&p&
上面数学知识的重要性在于,给定任意一个向量可以快速构建一个坐标系。。。。。。用途有多广?!?!?!你把它用在物体绕任意轴旋转上试试,你把它用在摄像机坐标系推导上试试,你把它用在求射线和三角形焦点上试试(搜搜这个吧《Fast Minimum Storage Ray Triangle Intersection》),你把它用在normal map上试试(据说可以,我回头看看,嘻嘻~),当然,你要是发现其他用途也私信一下我,嘿嘿。&/p&&p&要不是考研!!这个定理我踏马也发现不了啊!!线性代数老师压根就没有提过!!话说那天我懒洋洋的看着数二数三不考,数一要考的线性代数部分,看到这个定理后,突然感觉比雷劈轻,比电击爽的一丝电流在大脑里蔓延。。。。。。我靠~我找的你好苦啊!!!&/p&&p&
得了~就这么多吧,今天刚把xcode上的和glsl相关的代码写完,明天开始研究光照,随后更新光照部分,手头已经有两本书了,不过学习思路还是不太明朗。回头聊~&/p&&br& -----------------------------------这东西真叫分割线???------------------------------------------&br&谢(没人)邀。。。。。&br&学3D开发也有两三年了,弯路走了不少就当给大家提个醒吧。&br&3D图形学刚开始学的时候最难的部分其实是渲染流水线,要搞清楚流水线每一步做了什么,用到了那些矩阵,以及矩阵背后的数学原理还真是要了亲命。折腾了死去活来好久以后,发现好书就那么几本:&br&1.《3D数学基础:图形与游戏开发》
这个可以当参考手册使用&br&2.《3D游戏编程大师技巧》
很多人说它过时了,但是让你徒手写个流水线,我还没有发现比这本代码更完整,系统的书。不过这本书的缺点是,透视变换和投影变换完全是乱七八糟的一大坨坨!下面这本书就好很多。&br&3.《计算机图形学(opengl版)》第三版
最近才发现的,目前中文网站上所有关于3D流水线叙述比较热门的博客,帖子基本上都能从这本书上找到出处,很系统,也基本完整,概念,术语,图例等等也比较到位,有些不太清楚的地方可以上网查查,基本上没有什么太大的遗漏。&br&4.红宝书&br&以下所有前提都要求你明白简单的线性代数运算,比如向量和矩阵的左右乘法,矩阵转置,正交矩阵的逆矩阵等于其转置矩阵等等。&br&如果你不知道3D是啥,建议从红宝书开始。&br&如果对3D有一定了解,会一点opengl,建议从《计算机图形学(opengl版)》开始,跟着徒手写一个渲染流水出来,写的过程中,《计算机图形学(opengl版)》里面有数学原理的介绍不太完整的,查查《3D数学基础:图形与游戏开发》相关章节,不知道具体数据结构怎么设计的,查查《3D游戏编程大师技巧》。&br&这个阶段,如果最后能写出来一个软的光栅化流水线,渲染出来线框就算成功。这是我的学习过程,可能对于不同的人,学习过程不太相同,但是,3D渲染流水线上关于几何变换的东西,这三本书都包含的差不多了。&br&关于光照部分,我这个寒假想研究一下,主要是shader的使用,已经有几本资料了,我看看了再来更新吧。&br&好吧。。。。。我回答这个问题的原因是有没有人能帮我回答一下&br&&a href=&/question/& class=&internal&&点经过透视矩阵变化后得到齐次坐标,经行裁剪时w分量的含义? - 数学&/a&&br&这个问题啊!!!急死人了都!!很多资料都“巧妙”(还是我傻傻的没有看见)避开了这个问题!!!三天了!!代码改了十几次!!!猜的,蒙的,算的都试了个遍!!流水线就差这一小步!!还让不让人开心的写代码了!!!快摔啤酒瓶了都!!!&br&----------------------------------------------------他们管这东西叫分割线---------------------------------------------------&br&那个问题解决了,是我的疏忽,给大家带来了麻烦,很抱歉。答案我就写在那个问题下面了。
啊哈哈~ 上图喽~这是这十几天写的soft pipeline渲染的立方体黑色三角形是鼠标点选效果,嗯,精确度高高?~左面三角形使用透视纹理映射,右面的是线性映射,还是左面的给力啊(尼玛,计算量翻了好几倍啊~!)为了感谢大家的谬赞,来~小的们,把新出炉…
谢邀,这会是个比较漫长的学习过程&br&&br&&b&(一)国内引进出版的书籍&/b&&br&国内引进或出版的图形学书籍很多,但是大部分是糟粕,看它们是浪费时间&br&&b&&br&3D数学基础:图形与游戏开发&/b&&br&这本可以补数学基础,矩阵变换,线性代数啥的&br&&br&&b&图形着色器:理论与实践(第2版)&/b&&br&这本是比较新的讲 opengl shader 的&br&&br&&b&DirectX 9.0 3D游戏开发编程基础&/b&&br&这本是国内出版或引进的 d3d 书籍中唯一能看的&br&&br&&b&(二)国内没有引进的书籍,可以下载电子版或上淘宝买打印版&/b&&br&&b&OpenGL Shading Language&/b&&br&可以认为是 glsl 的圣经&br&&br&&b&Introduction to 3D Game Programming: With Directx 11&/b&&br&可以认为是 d3d11 的圣经,这本是 &b&DirectX 9.0 3D游戏开发编程基础 &/b&的升级版&br&&br&&b&(三)个人推荐&/b&&br&&b&3D数学基础:图形与游戏开发&/b&&br&&b&DirectX 9.0 3D游戏开发编程基础&/b&&br&&b&Introduction to 3D Game Programming: With Directx 11&/b&
谢邀,这会是个比较漫长的学习过程(一)国内引进出版的书籍国内引进或出版的图形学书籍很多,但是大部分是糟粕,看它们是浪费时间3D数学基础:图形与游戏开发这本可以补数学基础,矩阵变换,线性代数啥的图形着色器:理论与实践(第2版)这本是比较新的讲 open…
&a href=&/zhutaorun/Hearth-Stone& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&zhutaorun/Hearth-Stone · GitHub&i class=&icon-external&&&/i&&/a&,客户端难度不高,难的是细节和服务端通信。特别是卡片的种类多了以后,网络即时相应。&br&网络部分内容,我早找了之前关于炉石服务器和代码结构的分析&br&&a href=&http://blog.csdn.net/neil3d/article/details/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《炉石传说》架构设计赏析(1):游戏启动流程&i class=&icon-external&&&/i&&/a&&br&&a href=&http://blog.csdn.net/neil3d/article/details/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《炉石传说》架构设计赏析(2):Scene管理&i class=&icon-external&&&/i&&/a&&br&&a href=&http://blog.csdn.net/neil3d/article/details/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《炉石传说》架构设计赏析(3):Gameplay初探&i class=&icon-external&&&/i&&/a&&br&&a href=&http://blog.csdn.net/neil3d/article/details/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《炉石传说》架构设计赏析(4):Asset管理&i class=&icon-external&&&/i&&/a&&br&&a href=&http://blog.csdn.net/neil3d/article/details/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《炉石传说》架构设计赏析(5):卡牌&技能的静态数据组织&i class=&icon-external&&&/i&&/a&&br&&a href=&http://blog.csdn.net/neil3d/article/details/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《炉石传说》架构设计赏析(6):卡牌&技能数据的运行时组织&i class=&icon-external&&&/i&&/a&&br&&a href=&http://blog.csdn.net/neil3d/article/details/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《炉石传说》架构设计赏析(7):使用Google.ProtocolBuffers处理网络消息&i class=&icon-external&&&/i&&/a&&br&博主是仙剑系列之一的主程。
,客户端难度不高,难的是细节和服务端通信。特别是卡片的种类多了以后,网络即时相应。网络部分内容,我早找了之前关于炉石服务器和代码结构的分析
在普通CLR里,针对List&T&和Array的for比foreach快,而JIT在确定这个对象是List或Array的时候,会为foreach生成优化的代码,注意这里不仅仅是优化成for,而是把List直接优化成对其内部数组的访问,且不会有多余的边界检查,因此可以说List&T&是一个特殊的存在。&br&&br&这方面x86的JIT是这样的,x64的话,经tracing似乎还是foreach。x64运行时目前做的比较草率,似乎4.6开始(RyuJIT?)就精细很多了,因为之前不是特地写的JIT,而是用C++后端凑合改的。&br&&br&至于foreach的内存问题,首先,无论如何也不会多用几kb的内存,几十个字节最多了。其次,你看内置的集合,都额外写了一个struct的Enumerator,这样就可以把内存分配在栈而不是堆上,避免给GC造成压力(包括不用LINQ)。一般来说,对于需要密集foreach的情况,都是建议这么做的。&br&&br&至于Unity,估计对性能要求会比较高,所以更需要注意这方面。
在普通CLR里,针对List&T&和Array的for比foreach快,而JIT在确定这个对象是List或Array的时候,会为foreach生成优化的代码,注意这里不仅仅是优化成for,而是把List直接优化成对其内部数组的访问,且不会有多余的边界检查,因此可以说List&T&是一个特殊的存…
以下内容禁止任何媒体未经我同意转载!!&br&以下内容禁止任何媒体未经我同意转载!!&br&以下内容禁止任何媒体未经我同意转载!!&br&以下内容禁止任何媒体未经我同意转载!!&br&以下内容禁止任何媒体未经我同意转载!!&br&以下内容禁止任何媒体未经我同意转载!!&br&&br&===========================&br&&br&0912晚更新了一下Unity的数据情况;&br&&br&===========================&br&1、今天这个时点所有关于这个收购案例的评论文章,没有一篇文章写出来个所以然,顶多也就是这么一句:&blockquote&通过本次交易,将有利于公司在国际市场快速提升公司品牌,公司也将利用双方在国内国外的优势资源和渠道,充分发挥产业协同效应,进一步完善公司产业布局,提升综合竞争力。&br&&/blockquote&这还是人家公告里有的一句话……然后一堆新闻稿各种列掌趣年收入啊、收购的公司啊,连当年收购动网的陈芝麻烂谷子的事情都写出来了……&br&&br&为什么?因为根本就写不出来个什么……&br&&br&2、Unity值得投资吗?&br&&p&当然值得,让我们看一些数据;&/p&&br&&img src=&/4cf092dc2bec4a93fc35c_b.jpg& data-rawwidth=&760& data-rawheight=&305& class=&origin_image zh-lightbox-thumb& width=&760& data-original=&/4cf092dc2bec4a93fc35c_r.jpg&&&br&&p&这是Vision Mobile今年Q3做的开发者报告中关于游戏引擎使用情况的调查数据,&strong&从使用占有率角度考量,Unity的份额是47%,&/strong&接近50%……&/p&&br&&br&&p&当然,Unity在中国的市场占有率似乎没有国外那么高。(见下图)&/p&&br&&img src=&/bdeab3f045_b.jpg& data-rawwidth=&480& data-rawheight=&344& class=&origin_image zh-lightbox-thumb& width=&480& data-original=&/bdeab3f045_r.jpg&&&br&&br&&img src=&/0b0fad7c35aa24a300edcf7_b.jpg& data-rawwidth=&760& data-rawheight=&263& class=&origin_image zh-lightbox-thumb& width=&760& data-original=&/0b0fad7c35aa24a300edcf7_r.jpg&&&br&&p&这是Unity官方宣布的注册开发者数量,截至2013年是200万,现在这个数据是330万,到年底有望突破400万;而且增速角度看&strong&Unity的注册开发者已经保持差不多连续3年100%的增长。&/strong&&/p&&br&&p&这样的公司,&strong&任何一家有心在手游行业发展的上市公司,投资TA一点都不会让人意外,&/strong&差别也就是价格和股份多少,以及投资完之后怎么用的区别了。&/p&&br&&br&&img src=&/7ffb0fca0d85cbf2be9d49_b.jpg& data-rawwidth=&760& data-rawheight=&306& class=&origin_image zh-lightbox-thumb& width=&760& data-original=&/7ffb0fca0d85cbf2be9d49_r.jpg&&&br&&p&这张图是DENA做的关于各国开发者在3D引擎使用上的差别,它鲜明的告诉了我们,&strong&一家中国公司投资Unity是多么的“合理”!&/strong&&/p&&br&3、掌趣&br&中国手游行业代表上市公司之一,这评价我不带任何情绪,事实而已;&br&投资了Unity,就有了引擎的故事,就有了海外的故事,就有了开发者生态链的故事……&br&甚至有了大平台的概念……(有心人去看触控当时准备上市时讲的逻辑……)&br&掌趣的超高市值首先需要收入和利润作为支持,收购CP是最常见的方式,过去已经发生很多;&br&资本市场也开始对于A股上市公司收购手游CP的态度趋于理性或者直接转冷。&br&我们看过去一年掌趣股价的变动:&br&&br&&img src=&/994b9aeee8dbb7b70c01646_b.jpg& data-rawwidth=&1098& data-rawheight=&276& class=&origin_image zh-lightbox-thumb& width=&1098& data-original=&/994b9aeee8dbb7b70c01646_r.jpg&&&br&在停牌之前,掌趣的股价距离其巅峰40+的价格已经跌了30+%;&br&(中间有发生一次除权)&br&加之市场开始对于之前收购的CP能否完成14全年利润对赌产生怀疑;&br&(这不仅仅是针对掌趣,是对所有去年发生的收购案例)&br&今天这个时点一家A股公司再出公告说收家CP,可能股价未必会涨,反倒可能会降。&br&&br&那么作为掌趣,市值超过200亿的体量,曾经接近300亿市值的上市公司,怎么办?&br&除了收入和利润要做到之外,更需要故事,也就是很多人所说的:“点”。&br&主推掌趣股票的二级市场分析师炒作的“点”也好,媒体关注的新闻“点”也罢,总之需要一些不一样的东西。&br&所以关于这笔投资的解读,第一优先级是这个。&br&&br&4、战略投资&br&掌趣投资Unity是一起典型到不能再典型的战略投资,关于战略投资我写过太多的帖子;&br&偏激点总结简单一句话:中国的战略投资就是纸老虎。&br&现在的公告里没有写具体的价格和股份比例,不过江湖有传言比例并不高;&br&不是100%收购,不控股甚至不是大股东,可能连董事会席位都没有……&br&那么很多媒体臆想的诸如:“把Unity品牌纳入大掌趣体系”之类的就很难实现,毕竟掌趣这次入股的股份可能是不多的。&br&&br&&br&写在最后,可能很多人会觉得我偏激,尤其是国内二级市场的兄弟们;&br&我的核心观点是这笔投资不错,值得肯定但不要过分解读,尤其是关于两家公司后续的战略协同的可能性。&br&&br&========================&br&以上内容禁止任何媒体未经我同意转载!!&br&以上内容禁止任何媒体未经我同意转载!!&br&以上内容禁止任何媒体未经我同意转载!!&br&以上内容禁止任何媒体未经我同意转载!!&br&以上内容禁止任何媒体未经我同意转载!!&br&以上内容禁止任何媒体未经我同意转载!!
以下内容禁止任何媒体未经我同意转载!!以下内容禁止任何媒体未经我同意转载!!以下内容禁止任何媒体未经我同意转载!!以下内容禁止任何媒体未经我同意转载!!以下内容禁止任何媒体未经我同意转载!!以下内容禁止任何媒体未经我同意转载!!=====…
来自子话题:
Thanks The Great F*cking Wall
Thanks The Great F*cking Wall
谢邀。我首先想要指出的是,题主似乎把游戏引擎开发和游戏开发混为一谈了,这两者实在是相差非常远的领域(当然仍旧在游戏这个大范畴内)。打个比方,游戏引擎开发好比知道如何制造炒菜锅;游戏开发好比知道如何炒菜。相应的,好的炒菜锅未必一定保证炒出来的菜好吃;好吃的菜未必一定需要好的炒菜锅。&br&&br&由于我人不在国内,Apple ID是加拿大区的,所以你说提到的几个作品,不算很了解,但多少知道一些。在我看来,他们是不错,但是算不上一流作品。知道现在最红的游戏是什么? Candy Crush Saga 。这个游戏深度整合Facebook,不知道国内是不是流行的起来,不过这是目前北美区收入第一位的游戏。从技术角度讲,这个游戏任何引擎都能做,它NB的地方是在技术以外。&br&&img src=&/3aff28f31e7c0adee03166d_b.jpg& data-rawwidth=&630& data-rawheight=&544& class=&origin_image zh-lightbox-thumb& width=&630& data-original=&/3aff28f31e7c0adee03166d_r.jpg&&&br&Clash of Clans 是另外一个最近爆红的游戏,跟上面的这个游戏轮流坐庄营收第一名。看了画面就知道,这样子的游戏,真是不需要NB的引擎。&br&&img src=&/fff957dc269af4eaab904a6fe8123eb9_b.jpg& data-rawwidth=&960& data-rawheight=&640& class=&origin_image zh-lightbox-thumb& width=&960& data-original=&/fff957dc269af4eaab904a6fe8123eb9_r.jpg&&&br&所以请题主再仔细思考一下,到底是想做NB的游戏引擎,还是NB的游戏。
谢邀。我首先想要指出的是,题主似乎把游戏引擎开发和游戏开发混为一谈了,这两者实在是相差非常远的领域(当然仍旧在游戏这个大范畴内)。打个比方,游戏引擎开发好比知道如何制造炒菜锅;游戏开发好比知道如何炒菜。相应的,好的炒菜锅未必一定保证炒出来…
&a data-hash=&e59aa6c5ee28d1fa404c40aae3455c0b& href=&///people/e59aa6c5ee28d1fa404c40aae3455c0b& class=&member_mention& data-editable=&true& data-title=&@梁伟国& data-tip=&p$b$e59aa6c5ee28d1fa404c40aae3455c0b&&@梁伟国&/a& 老师提到的uFrame刚刚看了一下,很强大的感觉...&br&&br&在Unity游戏的开发当中,我并没有刻意地采用MVC框架,因为不像网站开发那样,Model,View,Controller在游戏这个领域里还没有很清晰的定义。&br&究其原因,可能是由于不同游戏类型本身的软件架构可以相差很远,而且游戏里面的Object之间有大量的交互,所以垂直的MVC似乎不是十分应景。&br&&br&然而,某种程度的分离代码逻辑是必要的,可以提高代码的可维护性和重用性。&br&下面我说说自己的一些经验。&br&&br&假设我们在做一个马里奥:&br&对于游戏里的角色,我会采用这样一个结构。&br&&b&Character Manager&/b&,它的作用是包含这个角色的Controller(s),并提供一个黑板(Blackboard)[1]。&br&&b&Controller&/b&,利用Reusable Models来处理角色在这个游戏中的某一状态的逻辑。&br&&b&Reusable Model&/b&,是一个虚的概念,并不是一个父类,通常这类Model都负责某一个特定的功能,可以重复利用,可看做游戏引擎的延伸。&br&我会将Character Manager和Reusable Model继承MonoBehavior,这样我们就能够直观地知道这个角色是什么类型的Character,并且可以利用inspector调节Model的参数。&br&&img src=&/c8a9eda7d8cd_b.jpg& data-rawwidth=&462& data-rawheight=&264& class=&origin_image zh-lightbox-thumb& width=&462& data-original=&/c8a9eda7d8cd_r.jpg&&&br&&br&&br&怎么将上面的架构应用在马里奥身上呢:&br&作为Character Manager,我们可以采用Finite State Machine或者Behavior Tree。一个好处是它们都天然地提供了“Controller”。&br&例如Finite State Machine,它的每一个State都可以看作一个Controller。&br&而Behavior Tree里面的Action Node,也可以看作是一个Controller。&br&&br&在每一个Controller里面,都会有指针指向一些Reusable Model。&br&例如下图Move State可以有一个Move Motor,专门来实现GameObject的移动,而Sprite则封装GameObject的表现,如动画、旋转、位置等等。&br&这些Reusable Model通常都提供丰富的参数可供调整,可以用于不同游戏当中。&br&&br&用户输入和游戏里面的消息,则会暂存在Character Manager里面的Blackboard里,供Character Manager使用,让它决定是否需要更换Controller。&br&例如马里奥里面我按左键,往左行动的信息会写在FSM的Blackboard里面,然后通过FSM的State转换机制 [2],从Idle State转换到Move State。&br&这样的好处是,往左的信息可以从Input Manager (图中没给出)那里得来,也可以从Enemy AI Manager(图中没给出)那里得来。&br&这样,一个类型(如拥有Idle,Move,Jump等状态)的FSM,就可以用在所有类似的角色身上,无论是玩家控制的还是AI控制的。&br&&br&&img src=&/c0eb81b602_b.jpg& data-rawwidth=&322& data-rawheight=&421& class=&content_image& width=&322&&&br&最终在Unity里面会是这样一个情况,FSM,Sprite,MoveMotor都作为Component,而Controllers则包含在FSM里面。&br&&img src=&/b447a65e1e2ebdf94a3e5b_b.jpg& data-rawwidth=&418& data-rawheight=&230& class=&content_image& width=&418&&&br&&br&以上方案虽然并不严格,但是在一定程度上提高了代码的可复用性和可维护性。&br&例如现在我基本都把MoveMotor,Sprite等Model写好,新项目就直接扔进来就能用;&br&MoveState,IdleState,JumpState等一些在平台游戏里常用的状态封装好,留出一些可调参数,例如状态间的转换。&br&&br&希望有帮助 :)&br&&br&&br&[1] Blackboard的本质是一个Dictionary。&br&[2] 比较原始的FSM会将State转换直接放在State里面,但这样大大降低了State的可复用性。因此可以尝试将State的转换作为一个可调参数。一些可视化的FSM的原理也是这样,利用连线将两个State链接起来,然后通过定义一些转换的条件。&br&&br&&br&----------Update 1-----------&br&1. 重新表述Controller的作用
老师提到的uFrame刚刚看了一下,很强大的感觉...在Unity游戏的开发当中,我并没有刻意地采用MVC框架,因为不像网站开发那样,Model,View,Controller在游戏这个领域里还没有很清晰的定义。究其原因,可能是由于不同游戏类型本身的软件架构可以相差…
Asset Store搜索Dialogue System和Cinema Director。&br&&a href=&https://www./en/#!/content/11672& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Asset Store&i class=&icon-external&&&/i&&/a&&br&&img src=&/ecbe5c4a018c8e8affcb0fa9066fb4cc_b.png& data-rawwidth=&770& data-rawheight=&480& class=&origin_image zh-lightbox-thumb& width=&770& data-original=&/ecbe5c4a018c8e8affcb0fa9066fb4cc_r.png&&&br&&a href=&https://www./en/#!/content/11672& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&https://www./en/#!/content/19779&i class=&icon-external&&&/i&&/a&&br&&img src=&/7bf4e8f0535cad4fc24753acf9a05961_b.png& data-rawwidth=&785& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&785& data-original=&/7bf4e8f0535cad4fc24753acf9a05961_r.png&&&br&人家都做得很完善了,何必重复发明轮子。
Asset Store搜索Dialogue System和Cinema Director。人家都做得很完善了,何必重复发明轮子。
谢邀, &br&&br&slua 是目前所有unity+lua方案里最快的,没有反射,很少gc alloc,功能最强大的,没有之一&br&&br&&b&**以下的benchmark是老版本, 新版更快**&/b&&br&&img src=&/c27add819ffc95a8ecf66f_b.jpg& data-rawwidth=&600& data-rawheight=&263& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/c27add819ffc95a8ecf66f_r.jpg&&&br&slua 0.6 vs slua 0.7&br&&img src=&/7da4d8bf3f433bcac5d5ced25f9c1879_b.jpg& data-rawwidth=&649& data-rawheight=&324& class=&origin_image zh-lightbox-thumb& width=&649& data-original=&/7da4d8bf3f433bcac5d5ced25f9c1879_r.jpg&&&br&&br&直接支持代理(支持iOS), 支持4.6+ ui系统,支持il2cpp,支持yield, 代码最简洁, 更新最快,文档最完善.&br&&br&我们自己项目在用slua, 大概70%+的lua代码,都是游戏核心逻辑,包括ui, 而我们的游戏是一个2.5D动作射击游戏,同屏超过30个怪,上百发弹幕做碰撞检查,红米可以轻松跑在30fps,说这些只是想说slua用于动作的游戏作为主逻辑都不慢, 更不用说什么回合/卡片/休闲游戏了.&br&&br&ulua/nlua都是基于反射的解决方案, 劣势是速度慢,gc alloc频繁,不直接支持代理, 还有一堆坑,需要修改,优势是不会产生静态代码,减少了app的尺寸.&br&&br&上面的方案都是基于lua的原生代码做为插件被unity调用,&br&&br&而unilua是c#的lua实现, 本身肯定没有c代码效率高,同时还需要考虑如果导出unity接口(可以反射,也可以静态代码),所以unilua不是一个完整的unity+lua方案,只是一个c#实现的lua虚拟机.&br&&br&&br&还有其他什么值得推荐的插件? 没有了,就用slua吧,妥妥的.&br&&br&利益相关:slua作者,其实也没啥利益,slua开源, &a href=&/pangweiwei/slua& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&http://www.slua.net/&i class=&icon-external&&&/i&&/a&
谢邀, slua 是目前所有unity+lua方案里最快的,没有反射,很少gc alloc,功能最强大的,没有之一**以下的benchmark是老版本, 新版更快**slua 0.6 vs slua 0.7直接支持代理(支持iOS), 支持4.6+ ui系统,支持il2cpp,支持yield, 代码最简洁, 更新最快,文档最完善.我…
6年前开始流行页游的时候,flash程序员万金难求,什么Unity、PHP一边去,端游C++你们很快就要失业了哇哈哈;&br&&br&3、4年前Html5出来,各种牛逼震天响,苹果抛弃flash了,以后是H5的世界了;&br&&br&2年前流行手游,cocos程序员万金难求,什么FlashAir、Java一边去,将来是cocos的天下懂未;&br&&br&今天,终于轮到U3D了。&br&&br&无它,各路神仙要制造氛围而已。&br&&br&技术人员一辈子都要学习新东西,喜欢什么就去学什么。但技术人员要追着资本的牛皮跑的话,最后你只会被牛皮吹死在天上。
6年前开始流行页游的时候,flash程序员万金难求,什么Unity、PHP一边去,端游C++你们很快就要失业了哇哈哈;3、4年前Html5出来,各种牛逼震天响,苹果抛弃flash了,以后是H5的世界了;2年前流行手游,cocos程序员万金难求,什么FlashAir、Java一边去,将来…
1&b&设计模式没用,看游戏设计模式&/b&&a href=&/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Game Programming Patterns&i class=&icon-external&&&/i&&/a&&br&2&b&找u3d项目的源码,要商业游戏&/b&,不要demo。先看,不需要理解,反复看。&br&3在熟悉的源码的基础上,&b&对源码进行修改&/b&(本来是一个角色的,可以改成两个角色),不停的更改任何方面。&br&4&b&开始写框架&/b&。&br&5&b&关于opengl,shader,你暂时用不上&/b&,不要浪费时间学,但是以后你要补,这个直接关系到你以后收入的天花板有多高。&br&6&b&要系统学习u3d,不要依赖百度&/b&,建议把游戏蛮牛的所有u3d书和视频,都看完,对u3d有整体感觉。&br&7.&b&去u3d官网&/b&&a href=&/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Unity Community&i class=&icon-external&&&/i&&/a&,有惊喜很多代码,直接复制黏贴就可。。。。&br&&br&&b&只能帮你到这里了,你遇到好机会别放弃,只要熟练u3d,至少10年之内,你的工资只会越来越高。&/b&
1设计模式没用,看游戏设计模式2找u3d项目的源码,要商业游戏,不要demo。先看,不需要理解,反复看。3在熟悉的源码的基础上,对源码进行修改(本来是一个角色的,可以改成两个角色),不停的更改任何方面。4开始写框架。5关于ope…
我总结一下吧,我最近问了很多关于Unity的问题,有许多大牛为我解惑,以下是这些人的知乎档案和精彩回答。各位可以一一关注了,以便以后邀请他们回答问题。&br&&br&&ul&&li&&a href=&/people/zhou-hua-78& class=&internal&&周华&/a& : &a href=&/question//answer/& class=&internal&&在Unity中StartCoroutine/yield return这个模式到底是怎么应用的?其中的原理是什么?&/a&&br&&/li&&li&&a href=&/people/iSamurai& class=&internal&&伍一峰&/a& : &a href=&/question//answer/& class=&internal&&如何在Unity中实现MVC模式?&/a&&br&&/li&&li&&a href=&/people/waigo& class=&internal&&梁伟国&/a& : &a href=&/question//answer/& class=&internal&&Unity3D如何有效地组织代码?&/a&&/li&&li&&a href=&/people/kang-yu-ying& class=&internal&&康与缨&/a& : &a href=&/question//answer/& class=&internal&&GDC 2014 之后,游戏引擎市场会有怎样的变化?&/a&&br&&/li&&li&&a href=&/people/songjian& class=&internal&&宋健&/a& : &a href=&/question//answer/& class=&internal&&计算机专业大学生如果想毕业后进入游戏行业,在大学期间应该怎样准备?&/a&&br&&/li&&li&&a href=&/people/deng-kai-20& class=&internal&&邓凯&/a& : &a href=&/question//answer/& class=&internal&&游戏引擎 Unity 的入门易精通难体现在哪?为什么?&/a&&br&&/li&&li&&a href=&/people/kuang-toby& class=&internal&&kUANG tOBY&/a& : &a href=&/question//answer/& class=&internal&&Unity3d客户端开发,要深入学习,更需要先从哪方面入手?&/a&&/li&&/ul&
我总结一下吧,我最近问了很多关于Unity的问题,有许多大牛为我解惑,以下是这些人的知乎档案和精彩回答。各位可以一一关注了,以便以后邀请他们回答问题。 : …
按照楼主的说法,已经具有一些基础了,只是要更进一步而已。&br&据我了解来看,楼主可以做以下事情提升自己:&br&&br&&b&0. 图形学的物理原理。&/b&图形学的物理原理是一切效果的基石,不管你怎么去思考,&b&图形效果的物理背景总是优先考虑的。&/b&因为它们直观,而且被其他学科例如几何光学等充分检验过。例如光线在界面和介质中的传播是折射与反射的基础、例如散射是体积光和Godray(丁达尔效应)的基础。当你能将一种光学现象(例如镜面反射)与它的物理背景联系起来,你就理解了问题的一半。这一部分的参考资料可见:《PBRT》&br&&br&&b&1. 数学技巧。&/b&物理学会告诉你基本的方程,对你的方程进行数学分析,会让你把握一个数学物理模型的主要方面,简化问题的表达或者是让简单的模型进一步处理更加复杂的问题。&b&这些内容会分散在不同paper中&/b&,可能需要你有一定的阅读量。例如BRDF到BTF的简化、SSS材质的简化等。此处推荐《Real Time Rendering》&br&&br&2. &b&程序技巧。&/b&仅仅有数学你的模型可能还没有办法在有限时间内以足够好的效果呈现出来。这个时候需要一定的程序技巧进行偷工减料。例如查找表、Level Of Detail等。Paper,历年SIGGRAPH的Course,UE和CE的代码,都是程序技巧的源泉。这部分内容非常分散,很多都是见招拆招就事论事,必须要有大量的积累。另外这一部分还有很多Tricky,这也是为什么往往对着paper,但是总是做不出理想的效果的原因。这一部分几乎完全要靠个人感觉。除了多实验,多读别人的结果外,没有什么太好的办法。当然,GPU Gems和Shader X系列是挺不错的选择。&br&&br&&b&3. 技术美术经验。&/b&本质上讲,图形学是糊弄眼睛的技术。所以图形学中也会有一些完全不讲道理的技巧和方法。有时候一些看起来很炫、原理很复杂的东西,可能不讲道理会更方便。典型的例子包括镜头炫光、Skybox、抖动纹理坐标模拟bump/heat hazing。所以哪些选择在程序上实现,哪些由美术直接出一个唬弄人的效果,这个需要很充分的经验。这方面部分有专著或者成体系。大部分都可能是道听途说或者是灵机一动。这些内容,可能要比程序技巧更难找。&br&&br&&b&4. GPU编程经验。&/b&不管怎么折腾,最后总是要把一切都放到GPU上。Mobile GPU和桌面GPU相比,Vendor更多,设计更加复(华)杂(而)精(不)巧(实),所以到处都是G点(哦,不对,是瓶颈),戳起来很有讲究。比如某些卡上,内存访问是瓶颈,那有一些就要靠计算;在TBR上,就要尽量利用TBR的优势,把Viewport拆开绘制,等等。这些内容一般都见于硬件厂商的Slides中,历年的GDC Course都是比较理想的资料来源。
按照楼主的说法,已经具有一些基础了,只是要更进一步而已。据我了解来看,楼主可以做以下事情提升自己:0. 图形学的物理原理。图形学的物理原理是一切效果的基石,不管你怎么去思考,图形效果的物理背景总是优先考虑的。因为它们直观,而且被其他学科例如…
楼上的NGUI好用的很,我基本没遇到什么问题,必须升级到3.0以上版本。&br&说说我所看到unity相关的,不好的习惯:&br&&br&&p&1
尽量不要在Awake(), start()等函数内加入业务逻辑的初始化代码。首先无法简便的直接启动调试查看。逻辑代码依赖太多,很多时候你只是希望检查界面编辑效果,在你不加入逻辑代码直接启动的话,基本会出来一大堆错误。另外,各个脚本start等函数的调用顺序很难控制,不要说可以调整脚本优先级,这个功能大致用用可以,不要依赖它。更何况很多人甚至不知道这个功能。初始化必须要显式调用,除非你知道自己在干什么(比如一些单纯的效果类脚本)。&/p&&br&&p&
不要public太多的变量到编辑器中,特别是逻辑变量。尽量减少脚本外部引用特别是对GameObject的引用。这对维护来说真的是一个梦魇,死的很难看。&/p&&br&&p&
一个Level内,要控制它的tree层级。你能想象一个MainMenu的level,直接包含了所有的UI,他们直接的脚本相互之间引用Level内GameObject。你能想象一个主脚本内有几十个引用到外部GameObject的变量吗? 单是要在编辑器内找到这些变量对应的GameObject眼睛都要瞎掉。有时在缺少信息的情况下只能靠猜的。应该把每个功能独立开来做成预制件,每个功能有管理自己的独自脚本组,然后再添加到主level内。这是基本的模块化而已,不能因为unity太好用就可以乱来。&/p&&br&&p&
有人似乎意识到了自己public出来的变量太多了,或者纯粹是懒得加了,于是当他确实需要引用某个外部GameObject时,通常都用someobject.getchild(i)来取得引用。 这绝对是值得捅一刀的行为,你的项目如果有人这么用,不要我说了吧。除非父节点之下是一个节点链表(如滑动框集合),否则谁知道getchild(i)得到什么意外?我就发现往某个节点增加了一张图片,然后整个模块的逻辑全乱掉了,这简直是谋杀未遂啊。&/p&&br&&p&
管理规划好你的NGUI的depth。2.7版本以下不要随意移动z轴和depth来达到显示效果,永远要有一个基本depth参照值。设计好atlas的划分,如果你不想遇到增加或减
少一张图片就会遇到奇怪的遮盖或消失问题。特别是你的level很庞大时,我发现无解。强烈建议升级到NGUI3.x,痛苦但值得。&/p&&br&&p&
coroutine是个好东西,但别滥用。实现一个状态机是有必要的。别的不说,至少不会在所有模块的各个角落里都添加上新手指引的代码了吧?建议仿照boost的statechart写一个简化版本,爽死你。&/p&&br&&p&
善用uigrid,uitable。当你写一个背包UI时,还要手动写每个格子的长宽,padding逻辑这是折磨自己,坑死别人,何苦。&/p&&br&&p&
规划好你的object的结构,这通常比你所写的脚本更重要。更一般的说,数据结构简单易懂,直接反映问题,这样你的逻辑代码才会清晰简洁。&/p&&br&&p&
设计不要超越或强迫程序。比如,要求一部分UI背景处在3D背景之后,其他UI的在3D背景之前,而这个3D场景是游戏主场景,忘了说你还要照顾在这之间穿插的粒子效果呢。我无法理解这种给自己下绊的尴尬决定是如何诞生的。可能2个原因吧,一是之前程序使用NGUI2.7,整个3d场景的layer被设成跟UI一致(无法想象),然后程序通过z轴和depth来达到这些效果。看到这我已经很凌乱了,而且居然无法说服他们这是不对的...&/p&&br&&p&
资源命名有待规范,目前资源包括预制件的命名混乱随意。这个是整个项目人员素质问题,或者说缺少个规划。&/p&&br&&p&
atlas的资源分布好好好规划。美术风格上尽量使用通用的控件,通用的控件使用的atlas限制一张之内。不要鬼扯什么设计不美观的问题,一张的atlas大小,都容不下你惊人的设计能力?特殊的图片按照level或加载状态分好atlas。尽量做到动态创建销毁。不要包含过多的大图片,能从设计上避免就避免。&/p&&br&&p&
我真的不建议把UI直接跟level做在一起。如果是轻UI类型的项目可以。做uiniy要时常考虑一点就是,level,prefab,atlas等等都是个二进制文件,svn下不可比对,意味着你修改某个东西时,在这个level下的所有东西都要被锁定了,其他人只能等你。&/p&&br&&p&
SDK接入时,养成代码里就做好平台区分的习惯,用宏加上状态机。因为SDK是个巨坑,先保证己方代码不出错,才能自求多福啊。平台区分代码(宏),尽量都放在相同的代码段中。&/p&&br&&p&
c#的话,模板可能会是个问题。我会告诉你相同的模板代码,在andriod下build通过,在wp8和ios就不行呢。写的朴实点了。&/p&&br&&p&
资源方面,请试着封装一个resource manager。加载资源,prefab,level等时想着bundle。到处resource.load是不行的。这是个蛮头痛的问题,我还没真正开始做,异步加载估计有很多问题等着。&/p&&br&&p&
在可编辑性和代码控制间权衡好是使用unity的很重要的问题。&/p&&br&&p&
unity是个编辑器,意思是不只是程序员用它。请所有相关的开发人员熟悉基本的工作流程与概念。 &/p&
楼上的NGUI好用的很,我基本没遇到什么问题,必须升级到3.0以上版本。说说我所看到unity相关的,不好的习惯:1 尽量不要在Awake(), start()等函数内加入业务逻辑的初始化代码。首先无法简便的直接启动调试查看。逻辑代码依赖太多,很多时候你只是希望检查界…
这里解释纹理绘画( texture painting)的做法。&br&首先,需要有一个已展开(unwrapped) UV 的 Mesh,挷定一个材质,材质内有一动态纹理。&br&从 Camera.ScreenPointToRay() 生成鼠标坐标的射线。&br&用 Physics.RayCast 投射射线至含 MeshCollider 的 GameObject。&br&若有碰撞,获得碰撞点的 RaycastHit.textureCoord,然后在那个动态纹理上按纹理坐标绘画笔刷。
这里解释纹理绘画( texture painting)的做法。首先,需要有一个已展开(unwrapped) UV 的 Mesh,挷定一个材质,材质内有一动态纹理。从 Camera.ScreenPointToRay() 生成鼠标坐标的射线。用 Physics.RayCast 投射射线至含 MeshCollider 的 GameObject。若…
@vczh 虽然没有具体说细节,但是大体的概念是对的。&br&平台/系统之间的差异总是要有人通过开发中间层来吸收,关键只是在于谁来做这个工作而已。&br&&br&目前来说Unity Player的组成大概是UnityEngine + Mono运行时。&br&&br&UnityEngine提供的是引擎的底层功能,这部分基本是C++实现的。每个目标平台有自己的平台依存代码,每种图形API各自有一个渲染器。(也就是说,基本上每个平台要有一个版本)&br&&br&Mono(&a href=&http://www.& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Home | Mono&i class=&icon-external&&&/i&&/a&)运行时则是提供了一个跨平台的CLR实现,允许引擎和用户的托管代码运行在每一个目标平台上。Mono自身在开发的时候就是跨平台的,实际上也是对大部分支持的处理器架构分别实现了JIT/AOT引擎。(由于Unity现在支持的平台数大于他们使用的Mono版本,很多后端是Unity自己实现/调整过的)&br&&br&所以Unity的多平台部署,基本就是用户的托管代码(平台无关)+针对目标平台的Mono运行时+针对目标平台的UnityEngine。用户生成的托管代码(.net Assembly)会在运行时被对应平台的Mono运行时JIT执行。&br&而Unity对Mono-AOT的利用,目前主要是针对iOS之类不允许运行时生成Native Code的平台,算是一个针对平台安全策略的Workaround。&br&&br&当然Unity的多平台支持也不是仅仅把编译后的Assembly和Player打个包那么简单,因为对于游戏还有艺术资产的问题。&br&举例来说,每个平台可能有自己原生支持的音频格式、纹理格式等等。对于这些差异Unity在打包的过程中也会自行吸收掉。所以虽然很多用户看到的多平台发布体验基本上就是简单的右键另存为,但背后Unity还是做了不少工作。&br&&br&维护十几二十个平台的Mono运行时是个相当麻烦的工作,外加Unity使用的Mono版本老旧,无法支持新的.net特性,性能也不尽人意。因此在未来Unity将会逐步开始引入新的运行时IL2CPP,最终替代大部分平台上的Mono Runtime。(目前已经用在了Unity 5.0的WebGL平台上)&br&&br&IL2CPP会将CIL编译成C++,然后通过平台SDK的C++编译器编译成对应平台上的原生代码。(至少按照Unity内部测试的结果是这样的)有兴趣的可以参考这篇官方Blog:&a href=&//the-future-of-scripting-in-unity/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The future of scripting in Unity&i class=&icon-external&&&/i&&/a&,以及Unite 2014的相关Session:&a href=&/watch?v=Bfa9ILwlsFw& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&/watch?&/span&&span class=&invisible&&v=Bfa9ILwlsFw&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&(youtube注意)&br&&br&第一次回答,如果内容有任何问题欢迎指出……
@vczh 虽然没有具体说细节,但是大体的概念是对的。平台/系统之间的差异总是要有人通过开发中间层来吸收,关键只是在于谁来做这个工作而已。目前来说Unity Player的组成大概是UnityEngine + Mono运行时。UnityEngine提供的是引擎的底层功能,这部分基本是C+…

我要回帖

更多关于 unity入门到精通 的文章

 

随机推荐