如何0基础如何自学英语学Unity5?

微信扫一扫,
零基础如何学习Unity3D?
责任编辑: 发布时间: 16:53:59浏览6次
如何学习Unity3D,Unity3D作为一种新兴的游戏开发引擎,受到很多网游爱好者,和游戏开发者的追捧,因此,很多人选择在进行Unity3D培训,但是怎样选择一家专业的Unity3D培训机构前该了解Unity3d哪些基础呢,为此蓝鸥和大家如何学习Unity3d.首先要知道什么是Unity3D:Unity是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。可发布游戏至Windows、Mac、Wii、iPhone、Windows phone 8和Android平台。也可以利用Unity web player插件发布网页游戏,支持Mac 和Windows的网页浏览,它的网页播放器也被Mac widgets所支持。其次是如何学习Unity3D:1、了解Unity3D的菜单,视图界面,这些是最基本的基础,可以像学word操作一样,大致能明白有几个菜单,几个基本的视图,各自起什么作用的就可以了。2、理解场景里面的坐标系统,输入系统,简单的向量概念,Unity3D的坐标系统及向量概念如果不理解清楚,不理解世界坐标,局部坐标的关系,即使一个简单的移动,缩放,旋转的几行代码,也会困惑你半天。3、学习创建基本的场景一些基本概念:游戏对象,组件,脚本。在界面上分别体现在层次视图,项目视图及属性视图,要理清楚彼此之间的关系。4、学习资源导入方面的一些基本元素:网格,材质,贴图,动画等。5、学习脚本的生命周期,Start,UpDate,ONGUI这些基本的方法。了解,预制,时间,数学等常用的类及相关方法。理解游戏对象,组件,脚本彼此之间的关系。6、学习摄像机,灯光,地形,渲染,粒子系统,物理系统等等,这些每一个深入进出都是一个很复杂的主题。7、学习更高级的概念:向量的加减法点乘差乘,光照法线贴图,内存管理,图形优化等等。Unity3D入门容易,真的要精通,那是相当难的。以上就是零基础如何学习Unity3D的全部内容/zt/unity3d/,蓝鸥Unity3D课程全面整合了VR/AR,讲解各类主流VR设备基于Unity开发过程,以及主流AR UnitySDK使用和全栈开发内容,涵盖了Unity与调用原生iOS、Android代码、PHP语言和MySQL数据库,打造专业、全面的Unity3D工程师。因VR/AR技术的学习,需要通过真实的设备来检验成果。蓝鸥Unity3D课程匹配设备齐全。Oculus眼镜、LeapMotion、Kinect、 暴风墨镜、 Xbox One游戏手柄等真实设备,真实再现项目场景,让学员近距离的了解VR/AR,亲试VR/AR项目开发。在蓝鸥学习Unity3D无论是课程、设备、项目还是教学、就业,蓝鸥都全力为学员做好服务,让学员掌握前沿技术,熟练使用所学知识,适配企业职位需求。所以无论你是在校生还是想提升职场技能,蓝鸥都是你最好的选择。 &蓝鸥VR游戏开发培训课程可申请免费两周的试听,试听期间不收费,课程试听申请联系:021-(沈老师) QQ:&&网址:
分享发布,文章内容系作者个人观点,不代表培训通对其观点赞同或支持,本网不对内容真实性负责,若该文章内容涉嫌侵权,请发邮件qq:。
相关新闻:
copyright & 2004-.cn, All Rights Reserved.
, 备案编号:京公网安备 ,怎么规划一个零基础学习Unity3D的“方法”或者“流程”? - 知乎717被浏览59369分享邀请回答17036 条评论分享收藏感谢收起8464 条评论分享收藏感谢收起查看更多回答1 个回答被折叠()看见那个敌人了!(上)——零基础程序媛Unity学习笔记 - 知乎专栏
{"debug":false,"apiRoot":"","paySDK":"/api/js","wechatConfigAPI":"/api/wechat/jssdkconfig","name":"production","instance":"column","tokens":{"X-XSRF-TOKEN":null,"X-UDID":null,"Authorization":"oauth c3cef7c66aa9e6a1e3160e20"}}
{"database":{"Post":{"":{"title":"看见那个敌人了!(上)——零基础程序媛Unity学习笔记","author":"sakura3301","content":"开篇既然我们已经可以简单移动了,那是不是能场景里多放点玩家呢?至少有两个玩家互相攻击,这才好玩嘛!所以这一篇的主题就是:如何使用 Unity 提供的 Networking 相关API来实现基本的多玩家同步问题。操作的部分我是尽量精简着写,因为笔记重点不在操作;如果不知道怎么做,建议看视频,视频有些顺序会和我的笔记不一致,因为我要保证我笔记主题的完整性。\n\n视频链接(需翻墙):郑重警告:本篇知识量巨大,答应我,一定在心情舒畅的情况下观看!1.准备知识1)
Multiplayer 和 Networking首先我们要知道什么是 HLAPI(注1),HLAPI —— high-level\nscripting API,是由相关类组成,用于网络分布式对象管理和状态同步。使用 HLAPI 可以不用考虑底层(注2)应用细节,就可以满足多用户游戏的一些通用网络需求,简单来说就是把底层抽象的 API 封装为容易理解的类,可以直接拿来用,大大降低了使用难度。注1:注2:底层指的是传输层,传输层wiki:Unity传输层API:题外话根据我过去的经验,有些公司会自己造轮子实现某些特定功能,因为我目前没有参加 Unity 相关工作,所以没法得知实际项目中关于这块知识会怎么用,是会自己封装一遍传输层 API 以实现特定需求,还是在 HLAPI 上继承,我不得而知。(欢迎告知在下)2)
网络系统概念在 Unity 的联网系统里,游戏会有一个服务器(Server)和多个客户端(Client),当没有明确的服务器时,其中一个客户端就要扮演服务器的角色,我们管这种角色叫主机(Host)。主机中,服务器和客户端是同一个进程,为了区分,主机使用叫 LocalClient 的本地客户端,其他客户端使用的是 RemoteClient 的远程客户端。以上内容翻译自 Manual:3)
Unity Relay Server这是 Unity 提供的替代服务器服务,可以不用考虑IP,没有防火墙和 NAT(网络地址转换),并且少于20人可以免费使用,这个例子就要使用这项服务。我的理解是它是用于本地测试的多玩家连接服务\n(唉~我对网络真是不熟,没法进一步解释清楚,学校学的那点东西早就忘光了,这真是个悲伤的故事)终于把必须了解的知识点都过了一遍,最好把上面链接里的内容都看一下,做到心里有数,后面做的时候再加深理解,否则,心里就会老是浮现 WTH?放心~后面还有更多知识等着你呢:P2.动手做联网中心 —— NetworkManager知识点:NetworkManager 是一个控制网络游戏状态的高级类(直译,期待更好的翻译)。这个类管理了一些很重要的信息,如指定网络连接信息(IP地址、网关、延迟时间等);重生信息—要控制什么 Player (这里的 Player 是指广义的玩家),以及在哪、怎样重生。操作:1)
新建 GameObject,命名为 _NetworkManger(为了和其他 GameObject 区分名字前面加了下划线),可以把这个 GameObject 的位置上移,不影响之后创建的对象。2)
对 _NetworkManger 添加 Component:NetworkManager,这虽然是个Script,但是可以看出他不能更改,只能继承。3)
继续对 _NetworkManger 添加 Component:NetworkManager HUD,这个类提供了默认用户界面,用于控制游戏网络状态,因为目前没有做专门的用户选择连接(房间)界面,它会让你选择以什么身份连接:Host 还是 Client。4)
将之前做的 Player 转化成 Prefab,并把 Hierachy 里的Player删掉。5)
为 Player 添加 Network Identity,Identity 可以理解为是进入 Network 的标识,没有它,你就不能把这个 Player 链接至 Network Manager -- Spawn Info-Player\nPrefab。最后要选中Network Identity -- local player authority,允许有这个 Player 的客户端完全控制它。6)
最后将 Player 链接到 NetworkManager -- Player Prefab。注:不能把5、6步的顺序搞反,如果反了话,会出现无法链接 Player,也不会出现错误消息提示。3.第三人称视角下面要实现玩家在线中弹身亡后,游戏不立即退出,而是以上帝视角观察整个游戏区域,那么就要添加一个场景摄像机。操作:1)
新建 Camera,命名为 SceneCamera,Tag(注1)选择为 MainCamera,最后调整摄像机的位置和角度,使之“看见”整个 Floor 。因为场景里就一个摄像机了,所以可以通过看Game里的结果,知道摄像机照射范围,调整的时候记得切换到 Global(注2)。注1:Tags用于标记游戏里需要识别的对象。注2:Local—保证 Gizmos 相对于物体旋转;Global — 使 Gizmos 相对于世界坐标定位(实在不知道更好的翻译),位置在工具栏,如下图:2)
调整 Camera 参数:选择 Clear Flags 为 Solid Color,Background 为深灰色。效果如下图:4.Player的出生点如果你现在心急运行了程序(比如我),首先会看到 Game 左上角出现下面这个UI界面:上面就是 Network\nManager HUD显示的界面,只启动一个客户端时,需要选择最上面的选项按钮,表示当前是Host。选完之后,进入游戏,会看到下面这个画面:Player 被卡到地板里了!WTH?!且慢,现在我们就来解决这个问题。操作:1)
新建名为 SpawnPoint01 的 GameObject,为它添加 Network Start Position(注1),改变 Gizmos 颜色和形状、位置和角度(注2)。2)
将 SpawnPoint01 复制出一份,重命名为 SpawnPoint02,也改变 Gizmos、位置和角度,使01和02的角度面对面(切换至Local),最后将这两个 GameObject 放到 _NetworkManager 下。\n\n\n\n\n\n\n\n3)
最后选择如下图:选择 Round Robin 是因为这份方法可以循环选取包括所有重生点的列表。注1:注2:这里一次调的不合适以后还能调,调好的位置和角度会应用在,在这里出生的 Player 上。乌拉拉拉~这个时候再运行程序,就能看到从出生点出生的 Player 了。如果想看到从两个出生点同时出生的 Player,很简单,将这个程序 build 出来。记得第一次运行时会让你选择窗口大小等,选择窗口大小800*600,注意一定选上旁边的 Windowed。还有一定记得,先 Build 出一个程序,再运行 Unity 里的程序,一个运行 Host,一个运行 Client,最后结果如下图:写到这里我的内心是崩溃的,居然罗里吧嗦了这么多东西!到这里还没有放上代码……这个联网问题看来要分上下两篇了,下一篇专心讲代码。另外,这一篇的功能仅仅是出生点可用,移动起来是有 Bug 的,这些 Bug 就是下篇要解决的,表急啦!最后,感谢您的收看,我们下次再见!~","updated":"T01:47:28.000Z","canComment":false,"commentPermission":"anyone","commentCount":10,"collapsedCount":0,"likeCount":15,"state":"published","isLiked":false,"slug":"","isTitleImageFullScreen":false,"rating":"none","titleImage":"/v2-af35d1bd58c17e73ac50eb8e86edd811_r.jpg","links":{"comments":"/api/posts//comments"},"reviewers":[],"topics":[{"url":"/topic/","id":"","name":"Unity(游戏引擎)"}],"adminClosedComment":false,"titleImageSize":{"width":658,"height":986},"href":"/api/posts/","excerptTitle":"","column":{"slug":"doulinote","name":"程序媛豆狸的笔记本"},"tipjarState":"inactivated","annotationAction":[],"sourceUrl":"","pageCommentsCount":10,"hasPublishingDraft":false,"snapshotUrl":"","publishedTime":"T09:47:28+08:00","url":"/p/","lastestLikers":[{"bio":"旁观者","isFollowing":false,"hash":"7c0055cbf79f4d6e15c4befb060f023b","uid":819600,"isOrg":false,"slug":"jia-bei-xi-46","isFollowed":false,"description":"","name":"贾贝西","profileUrl":"/people/jia-bei-xi-46","avatar":{"id":"c732b1b9e7635efc38bc9aac4dfa3f95","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},{"bio":null,"isFollowing":false,"hash":"82c2dad0a1d9dd3b39f708d7fb5e837b","uid":64,"isOrg":false,"slug":"xiao-mao-ren-24","isFollowed":false,"description":"","name":"小猫人","profileUrl":"/people/xiao-mao-ren-24","avatar":{"id":"68bba7cbda181d025c967bb47ba6e7c9","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},{"bio":"画渣努力中(偷懒)","isFollowing":false,"hash":"a0a8ee32b48dd9ef4c8df81c97eb8b6b","uid":88,"isOrg":false,"slug":"xi-chou","isFollowed":false,"description":"","name":"矽嚋","profileUrl":"/people/xi-chou","avatar":{"id":"ef0d37f4d617d4a790d42724","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},{"bio":"Good Day.","isFollowing":false,"hash":"e797fb69d75cbd14b845","uid":524700,"isOrg":false,"slug":"porphyah","isFollowed":false,"description":"Working in Progress...","name":"Porphyah","profileUrl":"/people/porphyah","avatar":{"id":"v2-fc4b6c50ca66ccbca52c0b8","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},{"bio":"安卓工程师","isFollowing":false,"hash":"7b03c8258ced289b8f945fe67217eeac","uid":123300,"isOrg":false,"slug":"xi-zhe-ya-mu","isFollowed":false,"description":"Z","name":"西哲雅木","profileUrl":"/people/xi-zhe-ya-mu","avatar":{"id":"v2-914d75ba99cfc464646c","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false}],"summary":"开篇既然我们已经可以简单移动了,那是不是能场景里多放点玩家呢?至少有两个玩家互相攻击,这才好玩嘛!所以这一篇的主题就是:如何使用 Unity 提供的 Networking 相关API来实现基本的多玩家同步问题。操作的部分我是尽量精简着写,因为笔记重点不在操作;…","reviewingCommentsCount":0,"meta":{"previous":{"isTitleImageFullScreen":false,"rating":"none","titleImage":"/v2-955e6fbfd2aa3_r.jpg","links":{"comments":"/api/posts//comments"},"topics":[{"url":"/topic/","id":"","name":"Unity(游戏引擎)"}],"adminClosedComment":false,"href":"/api/posts/","excerptTitle":"","author":{"bio":"努力当个程序媛里长的最可爱的","isFollowing":false,"hash":"162cb71c258d70a1475e","uid":44,"isOrg":false,"slug":"sakura3301","isFollowed":false,"description":"","name":"豆狸","profileUrl":"/people/sakura3301","avatar":{"id":"c11c25af841accd2a449d51fcf5a53bb","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},"content":"为什么做FPS游戏?因为守望先锋嘛!才怪!其实是因为,这是我能找到的中级难度例子,利用到的知识比较多,还可以不用考虑人物模型的问题。(链接如下:)本篇主要讲:搭起射击环境,放上Player,并让它动起来。这里一切模型暂时都先用简单几何体代替,为的是先降低难度,每做一篇都可以,不然做了半天动都动不起来多沮丧啊。另外,我用的是Unity 5.4,在做这个例子的时候发现,版本间功能和API还有不小差别的(哪怕是5.2和5.4),碰到的时候我会点明。1.搭个射击平台首先导入Unity提供的 Prototyping 资源,主要用的是其下 Prefabs 文件夹里已经做好的prefabs,我们需要 FloorPrototype64x01x64 和 CubePrototype04x04x04 组成地面和地面上的遮挡物,最后把这些 Gameobjects 放到一个命名为 Environment 的空 Gameobject 下。\n\n效果如下图:为什么不一开始就导入正式模型?(我怎么会承认这个竞技场模型根本下不来,替代的模型也没找好!)\n\n个人理解是降低难度,因为如果导入正式完整模型,其实调整里面的数值是非常不方便的,尤其是这个模型还是封闭的情况下;并且在实际开发中,往往会遇到这个最终模型可能没做好(先拿别的东西替代一下嘛,不要影响进度,主程&主美说)。2.放上Player这个Player的层次比较复杂,里面包括了摄像机和武器,将来还有粒子效果。1)
首先,新建名字为 Player 的 Sphere,并把它的两个 component——Sphere(Mesh Filter)(注1)和 Mesh Renderer(注2)去掉,只留下检测碰撞的 Sphere Collider(注3)。注1:Mesh Filter——指定从 assets 里取哪个mesh交给 Mesh Renderer 渲染到屏幕。
相关链接:注2: 注3:2)
其次,在Player下,新建名字为 Graphics 的 GameObject;并在 Graphics 下新建名为 PlayerModel 的 Sphere,并把它的 Sphere Collider 删掉。这样做的好处很多,可以把用于碰撞检测的部分和模型渲染分开,将来替换模型会非常容易。3)
然后做枪的部分,在 Player 下新建 Camera,在 Camera下新建名为 Gun 的 GameObject,再新建 Cube,放到 Gun 下,中间为了区分颜色,可以用 Material把 Cube 改成深灰色,最后把 Cube 捏成一个合适的长棍儿,为了省事我就用了一个 Cube。效果如下图:我知道调整这个枪的部分十分蛋疼(不要跟我讨论我有没有蛋的问题),其实可以这样做:首先把 Hierarchy 里的 Main Camera 删掉,目前这个没用,后面用到也会加上,然后像我一样同时打开 Scene 和 Game 两个tab,因为场景中只有 Player 里面的一个摄像机了,所以 Game 里显示的就是第一人称视角,这样调 Cube 就可以直接看到结果。\n\n\n\n最后,捏这个Cube在我看来也挺麻烦,哪怕我只调了一个,因为不熟悉左手坐标系,和Transform里Position和Rotation的关系,就这根棍儿,我前前后后调了四五回,(为什么调?因为看起来非常不自然,而我又有强迫症……)每回不知不觉几十分钟就过去了……如果你不知道怎么调,可以参考我的数值。(后面调粒子效果头更大……)3.准备写Player代码阶段这里是为了写代码所做的准备工作。在Player上加Rigidbody(注1),对Rigidbody要做个调整:取消Use Gravity(注2);展开Constraints,Frezee Rotation 选择X、Y、Z三个轴(注3)。注1:一定要注意操作Rigidbody(的位移和旋转),和操作GameObject的Transform是完全不一样的。Rigidbody是针对物理引擎的,在对物体施力的情况下,表现会和使用Transform完全不一样,并且在物理引擎下,使用Transform会有碰撞和计算方面的问题。在这个例子里,所以如果你测试这两种的话,会发现结果看起来差别不大,因为我没有对物体施力,具体的解释看下面 Manual 里的 Details:注2:因为后面的功能需要让 Player 浮动,不取消的话,运行程序后 Player 就掉下去了。注3:物理引擎下,不能让Player分别绕X、Y、Z轴旋转,在代码后面会有更详细的解释。4.要写代码啦~(我觉得写代码比调参数轻松有趣多了,碰到头疼的bug时不算……)在Player上新建两个C#文件,名字分别为PlayerMotor和PlayerController。1)
PlayerMotor用于直接操作Player移动、旋转镜头等,只能被动接受外部数据。\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n整个代码如下图:2)
PlayerController用于接收键盘、鼠标操作,然后将数据传递给PlayerMotor,进而控制Player。\n\n代码如下图:注1:注意C#的方法名喜欢用Pascal命名法,即标识符中的每个单词首字母都要大写;字段名会用驼峰命名法。我强烈建议遵循这个规则,保持风格统一。(请给强迫症患者一条活路!)注2:运行程序后,注意的话会看到Game里环境颜色不对劲,是偏深色,和Scene里看到的浅蓝色不同,这里是因为Light的原因,可以去Light面板下,切到Scene面板,最后面有个Auto复选框,取消掉,Build一次,环境光的问题就解决了。如下图:注3:这个Constraints的问题困扰了我一会,因为API上只说明了限制Rotation的是局部坐标,但是实际上,新建了GameObject,把Player套在里面, 并为Player添加一个用于自身旋转的测试代码(只用在Update里调用Rigidbody的旋转方法即可),运行后可以看到Player是还是会旋转,照理说,这个测试代码在局部坐标里的旋转应该被禁止了,那么问题来了,Constraints到底限制的是什么?我用场景上的Floor和Cube做测试,因为Cube有明显的XYZ轴,方便观察。在Floor和Cube上添加Rigidbody和BoxCollider,为了把他们纳入物理引擎的世界里,最后把Cube拉高至脱离地面,并且三个轴都旋转一下。如果我勾选了Constraints,表现如下图:Cube虽然落到地面但并没有自然放平。如果我没有勾选,表现如下图:Cube落到地面后会最终放平。结论:Constraints针对的是物理引擎下的局部坐标。到这里,第一部分最基本的雏形就完成了,感谢您的收看,我们下次再见!~","state":"published","sourceUrl":"","pageCommentsCount":0,"canComment":false,"snapshotUrl":"","slug":,"publishedTime":"T11:38:36+08:00","url":"/p/","title":"做个FPS游戏吧!——零基础程序媛Unity学习笔记","summary":"为什么做FPS游戏?因为守望先锋嘛!才怪!其实是因为,这是我能找到的中级难度例子,利用到的知识比较多,还可以不用考虑人物模型的问题。(链接如下:)本篇主…","reviewingCommentsCount":0,"meta":{"previous":null,"next":null},"commentPermission":"anyone","commentsCount":28,"likesCount":65},"next":{"isTitleImageFullScreen":false,"rating":"none","titleImage":"/v2-c2e50fa966dfc7c6feabc9f_r.jpg","links":{"comments":"/api/posts//comments"},"topics":[{"url":"/topic/","id":"","name":"Unity(游戏引擎)"}],"adminClosedComment":false,"href":"/api/posts/","excerptTitle":"","author":{"bio":"努力当个程序媛里长的最可爱的","isFollowing":false,"hash":"162cb71c258d70a1475e","uid":44,"isOrg":false,"slug":"sakura3301","isFollowed":false,"description":"","name":"豆狸","profileUrl":"/people/sakura3301","avatar":{"id":"c11c25af841accd2a449d51fcf5a53bb","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},"column":{"slug":"doulinote","name":"程序媛豆狸的笔记本"},"content":"开篇我知道大家一定在十一玩(宅)的非常开心,继续学习吧!我大致划分了原作者实现这个游戏的几个部分:基础功能、网络配对、数据存储,本篇介绍的是如何一步步设计基础功能的框架。另注下面用来展示思路的图形工具并不是任何一种主流的软件工程方面的图形工具,而是思维导图,不是那些图形工具不好,而是(挺汗颜的)我忘了那些复杂的工具怎么用了,希望大家勿怪。1. 明确分工千万别急着拿到文档(任务)就写代码!在任务急、领导催等一堆理由逼迫下,所写的代码很容易顾不到全局!顾不到全局可意味着,想到哪写到哪,最后出现更多的逻辑错误。那先不急着写代码能让你少加班?肯定也不是的,而是有了这张图,心里有谱,能在时间较少的情况下,做事有个轻重缓急。那么,什么是明确分工?我的理解是在做到这件事需要有几个步骤。首先,我自问这个FPS的基础功能有什么。看了前15个视频后总结:行走、转向、跳跃、攻击、挨打、掉血、死亡、重生、Player对应的动画状态(动作状态机)、粒子效果。在总结功能的环节,先不要想他们之间的关系,尽可能多的考虑到要实现多少功能,谨记我现在的身份就是功能挖掘者。下一步,对挖掘出来的功能分门别类。首先,行走、转向、跳跃、攻击,这四种功能算作一类,同时他们又分为两方面,一个方面接受用户输入控制,就是我按下键盘什么键会产生这些动作,另一方面就是对接受到的控制做逻辑处理;而挨打、掉血、死亡、重生也算作一类,同样分为两个方面,挨打算作交互输入,因为这三个动作是由挨打引起的,所以掉血、死亡、重生算作交互逻辑处理。2. 演好角色什么是演好角色?实际上我在上面一段里已经透露了一点,简单说就是专注于当前每一个任务步骤。在最后设计出基础框架前,我认为还有个很重要的步骤是,我们套什么设计模式?诚然,这是套路(我还想提醒不要生搬硬套),可是不要忘了套路的好处,第一,在你不知道怎么整合复杂系统时,可以至少有一个思路帮你进行下去;第二,不要认为设计模式只能设计整体框架,只要这个模块符合这个模式的一部分特点,那么它就可以应用在任何大小模块上,缺少的部分可以简化掉。在目前我给出的功能中,可以分出来中枢控制逻辑(动作逻辑和交互逻辑)以及视图展示(动作状态机和粒子效果),如果加上一个数据存储交互的Model,它就是一个标准MVC模式了。问题来了,现在加不加Model,以便严格套用MVC?我的回答是可以先不加,因为目前无论有没有Model,系统都是可以完整运行,目前知道这个Model在哪加(控制逻辑之后,视图之前),设计类时留出合适接口,日后随时加都可以。如果做到这一步,知道自己可以套用什么模式,知道自己套用的模式里,哪些部分是当前设计重点,哪些是可以简化的,那么就可以继续下去了。\n\n下图就是我设计的框架,我确定它不是最优解:注1:我原本是将攻击和挨打放一起,算作交互控制输入门下,可是后来想到,如果这里仅仅强调输入的话,攻击算是输出了。注2:动作逻辑处理包括分别处理行走、跳跃、转向、攻击。注3:掉血会导致死亡和重生,但掉血也会在动作状态机里有自己的状态,所以三个并排列;重生算是个承上启下的功能,暂时算作终结的状态。注4:粒子效果是和动作状态机绑定的,这里并排放因为这个软件不支持我画绑定。注5:动作状态机:表示有限个动作状态,可以通过变量控制,在这些状态间转移。这里借用了有限状态机的概念。Unity的Animator就是动作状态机。注6:那条无比显眼的红色箭头,表示掉血、死亡、重生三个动作也会导致动作状态机的改变。注7:图中红框表示这是输入逻辑控制,绿框中枢逻辑控制,这两个逻辑控制都算作MVC的Controller,为什么要分为两个,因为我要分别体现出功能。最后的蓝框是显示View注8:MVC的维基3.建议 & 吐槽1)全篇仅代表个人观点,记得今后我们以后一定会遇到更好的设计方法,不管什么方法要有根据的“硬套”,懂得变通的程序员才会受人欢迎哦!太犟的会让人害怕沟通,因为交流成本高了,无形中就少了很多机会。2)你可以拿着这个设计图和上司讨论这样做的可行性,让上司知道你的进度,有日报、周报可写,间接让老板知道你在干什么。当然这只是我的小建议,其实我知道大部分程序员干不出来这事,炫耀不是他们的性格,可是我遇到过挺多次,因为所在的公司没有OA,老板不知道我在干什么,他会采取各种办法旁敲侧击,从别人口中听到“我不知道你在干什么”的评价还是挺不开心的,所以,如果有机会的话,偶尔表现一下没坏处的。3)墙裂不想用架构这个词,听吐了。下期会根据这个思路设计出对应的类出来。\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n好了,本期设计思路就到这里,感谢您的收看,我们下期再见!~","state":"published","sourceUrl":"","pageCommentsCount":0,"canComment":false,"snapshotUrl":"","slug":,"publishedTime":"T21:22:32+08:00","url":"/p/","title":"明确分工、演好角色——零基础程序媛Unity学习笔记","summary":"开篇我知道大家一定在十一玩(宅)的非常开心,继续学习吧!我大致划分了原作者实现这个游戏的几个部分:基础功能、网络配对、数据存储,本篇介绍的是如何一步步设计基础功能的框架。另注下面用来展示思路的图形工具并不是任何一种主流的软件工程方面的图形…","reviewingCommentsCount":0,"meta":{"previous":null,"next":null},"commentPermission":"anyone","commentsCount":11,"likesCount":12}},"annotationDetail":null,"commentsCount":10,"likesCount":15,"FULLINFO":true}},"User":{"sakura3301":{"isFollowed":false,"name":"豆狸","headline":"","avatarUrl":"/c11c25af841accd2a449d51fcf5a53bb_s.jpg","isFollowing":false,"type":"people","slug":"sakura3301","bio":"努力当个程序媛里长的最可爱的","hash":"162cb71c258d70a1475e","uid":44,"isOrg":false,"description":"","profileUrl":"/people/sakura3301","avatar":{"id":"c11c25af841accd2a449d51fcf5a53bb","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false,"badge":{"identity":null,"bestAnswerer":null}}},"Comment":{},"favlists":{}},"me":{},"global":{},"columns":{"next":{},"doulinote":{"following":false,"canManage":false,"href":"/api/columns/doulinote","name":"程序媛豆狸的笔记本","creator":{"slug":"sakura3301"},"url":"/doulinote","slug":"doulinote","avatar":{"id":"v2-4c75bd1b0ccce6c49e4e78a38495d4da","template":"/{id}_{size}.jpg"}}},"columnPosts":{},"columnSettings":{"colomnAuthor":[],"uploadAvatarDetails":"","contributeRequests":[],"contributeRequestsTotalCount":0,"inviteAuthor":""},"postComments":{},"postReviewComments":{"comments":[],"newComments":[],"hasMore":true},"favlistsByUser":{},"favlistRelations":{},"promotions":{},"switches":{"couldAddVideo":false},"draft":{"titleImage":"","titleImageSize":{},"isTitleImageFullScreen":false,"canTitleImageFullScreen":false,"title":"","titleImageUploading":false,"error":"","content":"","draftLoading":false,"globalLoading":false,"pendingVideo":{"resource":null,"error":null}},"drafts":{"draftsList":[],"next":{}},"config":{"userNotBindPhoneTipString":{}},"recommendPosts":{"articleRecommendations":[],"columnRecommendations":[]},"env":{"isAppView":false,"appViewConfig":{"content_padding_top":128,"content_padding_bottom":56,"content_padding_left":16,"content_padding_right":16,"title_font_size":22,"body_font_size":16,"is_dark_theme":false,"can_auto_load_image":true,"app_info":"OS=iOS"},"isApp":false},"sys":{}}

我要回帖

更多关于 零基础如何学英语 的文章

 

随机推荐