一.Unity学前准备
1.VS2012的安装
1)打开压缩文件夹,在vs_ultimate鼠标右键“以管理员身份运行”
2)更改软件安装路径:在需要的盘里新建一个文件夹“vs2012”,勾选我同意许可条款和隐私策略,取消勾选加入体验改善,点击“下一步”
3)勾选自己需要的功能,点击“安装”
4)等待软件安装,安装成功后点击“启动”
5)在解压出的文件夹中找到激活码,双击打开,Ctrl+C复制激活密钥后,Ctrl+V粘贴至“产品密钥”处,然后点击“下一步”
6)激活成功,点击“关闭”
7)选择“常规开发设置”,点击“启动Visual Studio”
2.Unity安装1
1)进入Unity官网,滑动到最底部,点击“所有版本”
2)进入Unity的下载页面,找到对应的版本,点击“从Hub下载”
3)弹出系统选择提示框,根据自己的系统点击对应的按钮
4)弹出账户登录界面,如果已有账户直接登录即可
5)登录成功之后,如果是新注册的账户,会让你绑定邮箱,这里可以点击“暂不绑定”跳过,绑好手机号之后,回到下载页面,重新走2、3步骤进行下载即可!
6)下载完成之后,双击 UnityHubSetup.exe 进行安装即可
3.Unity Hub的设置
1)安装完成之后打开Unity Hub,在下载Unity之前,需要先登录账户并激活许可证
2)在进入绑定邮箱界面步骤的时候,填写一个能收到邮件的邮箱,收到邮件之后点击邮件内容里面的"Link to comfirm email",进行人机验证通过即可
3)设置安装路径: 进入设置界面,在 常规->Unity编辑器安装路径 中,选择安装路径并保存
4)激活许可证: 进入设置界面的许可证管理,点击“激活新许可证”(登录之前这个按钮是灰色的)
5)进入 新许可证激活 界面进行自己选择 激活完成之后可以看到个人版许
4.Unity的安装
1)进入Unity Hub的 安装 界面,点击“安装”
2)进入Unity版本选择界面,选择一个 LTS(长期支持) 的版本,点击“下一步”
3)进入安装模块选择界面,根据自己的需求选择要安装的模块,点击“下一步”
4)进入最终用户许可协议界面,勾选同意,点击“完成”
5.XMind安装
1)下载XMind安装包,双击xmind安装包,进行安装
2)点击next,接受软件协议
3)选择软件安装位置
4)勾选快捷方式创建 选前两个
5)点击install按钮,进行安装
6)安装完成,点击finish按钮,打开xmind软件
二.Unity基础
1.创建新项目
启动 Unity 3D 后,点击“新建”,创建一个新的工程,可以修改文件名称和文件路径
创建好新项目后,由于每个项目中可能会有多个不同的场景或关卡,所以开发人员往往要新建多个场景。 新建场景的方法是:选择 Unity 3D 软件界面上的菜单 File(文件)→New Scene(新建场景)命令即可新建场景
2.创建游戏物体
选择GameObject--3DObject--Plane命令创建一个平面用于放置物体
选择GameObject--3DObject--Cube命令创建一个立方体
最后使用场景控件调整物体位置,从而完成游戏物体的基本创建
3.添加游戏物体组件
游戏物体组件可以通过 Inspector显示,这些组件还可以附加很多组件。 例如要为 Cube组件添加 Rigidbody刚体组件,选中 Cube,执行 Component组件→Physics→Rigidbody菜单命令,为游戏物体 Cube 添加 Rigidbody 组件。
4.项目保存
执行 File→Save Scene(保存场景)菜单命令或按快捷键 Ctrl+S 在弹出的保存场景对话框中输入要保存的文件名
三.行业介绍
1.求确认
需求确认内容: 1、明确交接责任人的姓名、联系方式 2、编写《项目需求文档》 3、《需求确认书》或《项目需求确认单》(需求确定好以后最好让客户负责人签字)。
项目策划与资料采集: 1、编写《项目设计文档》 2、编写《项目报价单》 3、项目所需资料采集 4、编写《项目制作时间节点表》
2.一般项目流程
需求确认→建模→UI设计→程序编写→测试→审核
3.策划
1)产品策划,为实现用户需求进行产品设计的岗位。
2)前期策划,房地产公司土地规划部门的岗位。
3)营销策划,提升销售额或市场转化率的岗位。
4)广告策划,以创意输出为主的岗位。
5)活动策划,以活动为载体的综合服务岗位。
6)运营策划,以产品或者活动为载体的综合服务岗位。
7)游戏策划,以满足用户挑战需求,设计关卡及装备等攻关所需素材
4.建模
模型制作流程:1、素材采集 2、模型制作 3、贴图制作 4、场景塌陷 5、命名 6、展UV坐标 7、灯光渲染测试 8、场景烘培 9、场景调整导出
模型制作包含的基本内容:1、场景尺寸 2、单位 3、模型归类塌陷 4、命名 5、节点编辑 6、纹理 7、坐标 8、纹理尺寸 9、纹理格式 10、材质球
5.UI软件介绍
UI设计行业中,常用的主要软件为:PS和AI, 其中PS为市场占有率最多,AI通常被用来纯矢量图辅助设计
UI设计规范:1、UI图片格式统一PNG格式 2、UI图片命名规范 3、所有按钮和背景必须分开 4、可重用设计
Ui控件汇总:按钮 单行文本框 多行文本框 水平滑动条 垂直滑动条 水平滚动条 垂直滚动条 进度条 下拉列表框 复选框
UI命名规范:按钮命名规范:btn_ 第一个按钮就叫btn_01 第二个按钮就叫btn_02 ............
菜单menu 下拉框ckb 文字txt 标题lab
6.程序实现
1)版本管理:SVN和git
2)代码编写规范
3)代码库的建立
四.初识Unity
1.Unity是什么?
Unity3D是一个游戏开发引擎 由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。
Unity3D是世界顶级引擎之一,从诞生到现在不到二十年间取得了辉煌的成果。 市场占有率达到70%以上,全球拥有1000多名员工。 Unity在全球移动3D游戏引擎市场占领导地位
2.Unity 3D能做什么?
游戏开发(手游)
游戏开发(页游)
游戏开发(端游)
VR(虚拟现实)
AR(增强现实)
虚拟仿真
建筑可视化
军事模拟
3.Unity框架
1)分析工程结构框架
一个组件或多个组件组成一个游戏 一个游戏或多个游戏组成一个场景 一个场景或多个场景组成一个项目
2)GameObject与Component
GameObject:游戏对象相当于组件的容器
Component:组件附于游戏对象不同的特性
3)工程文件夹的管理结构
新建一个Unity工程,目录结构: 1、Assets文件 2、Library文件 3、ProjectSettings文件 4、运行时还会多出Temp目录 5、如果用Monodevelop或VS打开过还会生成很多工程文件
4.Unity常用文件夹
Plugins 存放基于C#语言编写的插件,存放Unity导入的插件
Resources 存放在此文件夹中的资源,可调用Resources.Load( )加载资源
Editor 存放有关编辑器脚本,Unity一旦启动,将运行辑器脚本代码
五.Unity编辑器基础
1.Unity界面组成
1)层次结构窗口
这是层次结构窗口。这是场景中每个对象的分层文本表示形式。在此列出最近打开的场景中的所有对象及其父子层次结构。 场景中的每个项目在层次结构中都有一个条目, 因此两个窗口是链接的。层次结构定义了对象之间如何相互连接的结构。 默认情况下, “层次结构”窗口按创建顺序列出游戏对象, 最新创建的游戏对象位于底部。我们可以通过上下拖动游戏对象或制作父或子游戏对象来对游戏对象重新排序。
2)场景视图
在此窗口中, 我们将创建场景。该视图使你可以直观地浏览和编辑场景。 场景视图可以显示2D或3D透视图, 具体取决于你正在处理的项目类型。 我们正在使用场景视图来选择和定位场景, 相机, 角色, 灯光和所有其他类型的GameObject。 能够在场景视图中选择, 操作和修改对象是开始在Unity中工作必须学习的一些最重要的技能。
3)检查器窗口
使用”检查器”窗口可以查看和编辑当前所选对象的所有属性。 由于不同类型的对象具有不同的属性集, 因此检查器窗口的布局和内容将有所不同。 在此窗口中, 你可以自定义场景中每个元素的外观。 你可以在”层次结构”窗口中选择一个对象, 或在场景窗口中双击一个对象以在检查器面板中显示其属性。 检查器窗口显示有关当前所选GameObject的详细信息, 包括所有附加的组件及其属性, 并允许你修改场景中GameObjects的功能。
4)项目窗口
此窗口显示用于游戏的文件。你可以通过单击项目窗口下的创建来创建脚本, 文件夹等。 在此视图中, 你可以访问和管理属于你的项目的资产。 项目中的所有资产都存储并保存在这里。所有外部资源(例如纹理, 字体和声音文件)也都保存在此处, 然后再用于场景中。 收藏夹部分位于项目结构列表上方。你可以在其中维护经常使用的物品以便于访问。你可以将项目从项目结构列表拖动到”收藏夹”, 也可以在其中保存搜索查询。
5)游戏窗口
此窗口显示游戏进行时主摄像机看到的视图。此处的意思是, 你可以看到一个预览窗口, 显示游戏对玩家的外观。 它代表了你最终的比赛。你将必须使用一个或多个摄像机来控制玩家在玩游戏时实际看到的内容。
6)资源商店
Unity资产商店是一个不断增长的免费和商业资产库, 由Unity Technologies和社区成员创建。 提供了各种各样的资产, 涵盖从模型, 纹理和动画到整个Project示例, 教程和编辑器扩展的所有内容。 可通过在Unity编辑器中创建的简单界面访问资产, 然后将其下载并直接导入到你的项目中。
7)控制台窗口
如果你熟悉编程, 你将已经知道所有输出消息, 错误, 警告和调试消息都显示在这里。它与Unity相似, 不同之处在于输出消息的处理方式与你认为的有所不同。 Unity的控制台窗口显示Unity生成的错误, 警告和其他消息。 你还可以使用Debug.Log, Debug.logError, Debug.LogWarning函数在控制台中显示自己的消息。
2.Unity界面各功能介绍
1)自定义界面布局 :上述各窗口可随意调整其布局 保存自己的布局:window->Layouyts->Save
2)Transform工具栏 :通过该工具栏中的工具,在场景视图中与选定的游戏对象进行交互 有6个工具
3)手: 该操作模式时,在场景视图中通过按住屏幕来平移视图 无法选中游戏对象
4)移动 :移动选中的游戏对象
5)旋转 :旋转选中的游戏对象
6)缩放: 缩放选中的游戏对象
7)矩形: 在游戏对象的某个与坐标平面平行的横切面上调整其大小
8)移动+旋转+缩放 3个功能的组合
9)位置控制栏:位置 :Pivot:选择游戏对象的中心(实际的中心)
Center:选择对象的中心(计算得出的中心)
区别:假设一个模型本身的原点在其底部,则Pivot模式下中心为其底部,Center 模式下中心为其中央
方向 :Local:显示对象自身坐标系的坐标轴方向
Global:显示世界坐标系的坐标轴方向 播放、暂停、逐帧控制栏
需注意播放模式下对场景中游戏对象属性的修改不会被保存
10)项目目录结构:
Assets 所有游戏资源
Library 导入资源的本地缓存
Logs 保存日志信息,如包更新信息(Packages-Update.log)
Packages manifest.json保存了项目中所使用的包,Unity会根据该清单下载本项目所需的包
ProjectSettings 项目设置相关内容,通过Edit->Project Settings 设置的内容都保存在该处
Temp 构建过程中生成的临时文件
3.Unity 3D中层级关系
1)什么是Layer ?
层级是Unity中场景物体的一种属性。摄像机可以指明渲染层级以渲染场景中的部分物体。灯光可以指明照射层级以照亮部分物体(可以指定照亮某些层级的物体以显示阴影)。层级还能用于设置物理碰撞关系。
添加与设置Layer 添加与设置Layer都可以选中一个物体之后在Inspector面板中操作。如下图所示
Unity内置了5个层级,并预留了3个层级给引擎使用。用户可以自定义序号为8至31的层级。总共有32个层级是方便用户使用int类型做位操作取得想要的层级组合。
4.Unity 3D物体操作常用按键
新建一个cube物体。在unity3d界面左上角可以看到红色下划线的五个图标(下面用图标1到5数字表示),分别对应不同功能,这些功能操作物体很常用。下面用cube物体的操作来演示这几个功能
1)按Q键(或者点击图标1),场景的物体无法选中,此时按住鼠标左键可以拖拽移动界面,但不会影响到物体原有的位置
2)按W键(或者点击图标2),此时若单击物体,则物体被选中,并且出现轴向,移动轴可以改变物体位置
3)按E键(或者点击图标3),此时可以旋转该物体
4)按T键(或者点击图标5),此时也可以改变物体大小
六.Unity基础
1.几个常见的基本组件
1)Mesh Renderer and Mesh Filter: 任何一个模型都是有许多三角形网格面构成 而网格面的核心组件就是Mesh Renderer(网格渲染器)和 Mesh Filter(网格过滤器)。
在Mesh中存储着三维模型的数据:vertices(顶点数据数组Vector3[])、triangles(三角形顶点索引数组,int[])、normals(法线向量数组,Vector3[])、uv(纹理坐标数组,Vector2[])。 也可以直接写顶点信息写个mesh模型
filter:决定形状 renderer:决定外观
2)Transform组件
transform 是物体模型最基本的组件,几乎每个物体都有,大家应该也对这个组件比较熟悉,那我就直接把官方文档搬来供大家翻阅吧 变换组件决定场景中每个对象的位置、旋转和比例。 每个游戏对象都有一个转换。 变换的位置、旋转和缩放值是相对于父变换计算的。 如果transform没有父物体,属性将会根据在世界空间中计算。
3)Rigidbody
1.Mass: 质量 物体的质量
2.Drag: 阻力 当受力移动时物体受到的空气阻力。
3.Angular Drag: 角阻力 当受扭力旋转时物体受到的空气阻力。
4.Use Gravity: 使用重力
5.Is Kinematic: 是否是运动学 游戏对象是否遵循运动学物理定律,
若激活,该物体不再受物理 引擎驱动,而只能通过变换来操作。
6.Interpolate 插值 物体运动插值模式。当物体抖动时,可开启这个功能,使抖动更加平滑
7.Collision Detection 碰撞检测 碰撞检测模式。同样建议勾选上continual,如果不勾选,当物体运动过快时可以会穿模(i think主要还是因为update帧调用时间间隔的问题)
8.onstraints 约束 对刚体运动的约束。当不想在某个轴发生变化时,可根据需要勾选
4)Collider (物体碰撞器)
collider前面的名称是 碰撞器的形状 box=盒子
1.Is Trigger :是否具有触发效果,默认不选中 ,这个也很重要,根据需要勾选,勾选后没有碰撞效果,但会触发碰撞检测,可在代码中写触发事件
2.Material : 物理材质(摩擦力,弹力),决定了与其他物体接触时的信息,做2d游戏时跳起和墙会有摩擦,当添加个Physics Material后可以调整物体摩擦
3.Center :边框的位置 4.Size :边框的大小
5)预制体
1.如何制作一个预制体?
预制体的作用就是为了重复利用资源,所以对于场景中重复使用的对象都尽可能的做成预制体再拖入游戏使用 对于外部导入的模型资源,导入进来就是以一种预制体的形式存在的 凡是能够拖入Hierarchy面板的,都可以制成预制体,包括但不限于模型、UI、挂载脚本的空对象等。 .作用与区别 修改预制体实例不会影响原始预制体 修改原始预制体会影响所有预制体实例
预制体变体的图标和原始预制体的图标略有不同 当你将一个已经是预制体的游戏对象再次拖入Assets窗口时,弹窗就会提示, 想要创建另一个原始预制体还是想要创建该原始预制体的变体。我们选第二个选项,则预制体变体创建成功。
2.模型制作流程
1)素材采集
2)模型制作
制作规范:,PC端理论范围1500~4000,如果屏幕出现大量模型,应降低每个模型面数,正常单个模型控制在1000个面以下,整个屏幕控制在7 500个面一下,所有问题不超过20 000个三角面 5、整理模型文件:看不到的地方不需要的面要删除,合并断开的顶点,移除孤立的顶点,提高贴图的利用率,降低整个场景的面数,以提高交互场景的运行速度,同时注意命名规范,模型给绑定之前必须做一次重置变换。 6、保持模型面与面之间的距离推荐最小间距为当前场景尺寸的1/2 000。例如在制作室内场景时,物体面与面之间的距离不要小于2mm;在制作场景长(或宽)为1km的室外场景时,物体的面与面之间距离不要小于20cm,如果问题的面与面之间贴的太近会出现两个面教程出现闪烁现象。模型与模型之间不准许出现共面,漏面和反面,看不见的面要删除,在建模初期一定要注意检查共面、漏面和反面情况;7、可以复制的物体尽量复制,如果1 000个面的物体,烘培好以后复制出去100个,那么它消耗的资源,基本上和一个物体消耗的资源一样多。 8、建模时最好采用Editable Poly面片建模,这种建模方式在最后烘焙时不会出现三角面现象,如果采用Editable Mesh在最终烘焙时可能出现三角面的情况。 9、塌陷模型:一个模型经过建模、贴纹理之后就是将模型塌陷,这一步是为了下一步烘焙做准备,在塌陷时要注意一下问题: a、按照“一建筑物一物体”的原则塌陷,体量贴别大或连体建筑可分别塌为2~3个物体但是导出钱要按建筑物在塌成一个物体。 b、用Box反塌物体,转成Poly模式,这时需检查贴图有无错乱。 c、按项目对名称的要求进行严格的标准的命名。 d、所有问题的质心要归于中心,检查物体位置无误后锁定物体。 10、模型不能使用中文命名,必须使用英文命名。 11、通过镜像复制创建的模型需要修改器修正。第一步:需要选中镜像后的物体,然后进入Utilities面板中单击Reset XForm,在单击Reset Selected;第二步:进入Modfiy面板选取Normal命令,反转一下法线即可 12、处理烘焙问题黑缝,烘焙时,如果图片不够大的时候,往往会产生黑缝。 a、如果是比较复杂的鸟瞰楼体,可以把楼体合并成一个物体,变成多重材质。然后对楼体进行整体完全烘焙,这样可以节约很多资源。 b、对于建筑及地形,须检查模型的贴图材料平铺的比例,对于较远的地表(或者草地)可以考虑用一张真实感的图来平铺,平铺的次数少一些,对于远端地面材料,如果平铺次数大了,真实感比较差。
3)贴图制作
4)场景塌陷
5)命名
6)展UV坐标
7)灯光渲染测试
8)场景烘培
9)场景调整导出
3.刚体
刚体(Rigidbody)是激活物体物理属性的主要组件,当刚体被绑定在游戏对象上时,对象将立即受到重力影响 刚体:Rigidbody,属于物理类组件。 作用:添加了刚体组件的游戏物体,就有了重力,就会做自由落体运动。也就意 味着可以像现实中的物体一样运动。 给物体添加刚体组件 选中游戏物体-->菜单 Component-->Physics-->Rigidbody 注意:因为刚体控制对象的移动,所以当添加刚体后,就不应该在用Transform来改变物体的位置旋转了,而是应该使用Rigidbody.Addforce来对对象施加力,并且让物理引擎来计算结果,如产生多少位移等 也有一些情况,需要为游戏对象添加刚体但是又不想让其受物理作用 例如:需要为游戏对象添加刚体来触发碰撞,但同时又不想让其物理作用,刚体有一个名为Is Kinematic的属性,当这个值为true时,力碰撞关节都不在影响刚体,此时刚体将只能通过Transform来操作,但游戏运行时尽量少切换Is Kinematic,因为比较影响效率 当刚体的单位质量能量小于Rigidbody.sleepThreshold时,物体将停止移动,此时为Sleep状态,当能量重新超过这个值的时候才会离开Sleep状态 打开场景,有左右两个立方体,左边的没有加刚体,右边的加了刚体,运行场景 左边的悬浮在空中,右边的会下落,而且会穿过地面继续下落。
当刚体移动速度低于定义的最小线性或旋转速度时,物理引擎假定它已经停止。当这种情况发生时,GameObject不再移动,直到它接收到碰撞或力,因此它被设置为“睡眠”模式。此优化意味着在下一次“唤醒”(即,再次设置为运动)时,不更新刚体的处理器时间。 对于大多数目的,Rigidbody组件的睡眠和唤醒是透明的。然而,一个游戏物体可能无法唤醒如果静态撞机(即,一个没有一个刚体)移动到它或修改远离它变换位置。这可能导致,例如,当地板已经从它下面移出时,Rigidbody GameObject挂在空中。在这样的情况下,游戏物体可以明确使用唤醒WakeUp功能。见刚体和刚体2D有关睡眠的更多信息组件页面。
4.碰撞器
碰撞器(Collider)定义了游戏对象在发生物理碰撞时的形状,碰撞器是不可见的,不需要和对象的网格模型对应,一个简单近似形状的碰撞器是高效并且不会被察觉的,在Scene视图中,碰撞器以绿色线框显示, 可以独立物理引擎之外工作 原始(primitive)类别的碰撞器是最简单也是最高效的,包括: 盒子碰撞器(Box Collider) 球体碰撞器(Sphere Collider) 胶囊碰撞器(Capsule Collider) 可以对同一个游戏对象绑定多个碰撞器,这种组合出来的碰撞器形状可以很好的近似复杂的网格模型并且保持高效 子物体也可以有碰撞器,但是不能再拥有刚体 Mesh Collider碰撞器对处理会有较多性能占用,所以需要小心使用 通常情况下,非原始碰撞器之间是不会产生任何碰撞的,例如:两个网格碰撞器之间不会产生碰撞,标记为凸起的(Convex)的网格碰撞器才能够和其他网格碰撞器发生碰撞 原则是场景方面可以用网格碰撞器,而角色等移动的物体应使用原始碰撞器或原始碰撞器的组合 碰撞器也可以不添加刚体单独使用,例如常见阶梯墙等场景中的静态物,我们称为静态碰撞器(static Collider) 我们标记一个碰撞器为静态时,就不要在通过Tranform改变它的位置,否则会严重影响物理引擎的效率 碰撞器与刚体同时绑定于游戏对象,我们称之为动态碰撞器(dynamic Collider) 当静态碰撞器与动态碰撞器碰撞时,动态碰撞器的对象会受到影响(如反弹)但是静态不受影响 Is Trigger:如激活,此碰撞器用于触发事件,并且被物理引擎忽略 Material:引用何种物理材质决定了它和其他对象如何作用 Convex:如激活,该网格碰撞器将会和其他网格碰撞器碰撞,凸起的网格碰撞器限制在255个三角形面内 Mesh网格:用于碰撞所引用的网格
使用刚体移动的物体,与场景中其他的物体相碰撞: 其实是碰撞的目标物体的“碰撞体”组件,也就是 Collider。 另外和目标物体碰撞的,是我们移动的物体的自身的“碰撞体”组件。 碰撞体可以理解为我们的模型的“外骨骼”。 模型只要加了刚体,就必须要加碰撞体,否则没有意义。 触发器:注意使用2d触发器就要使用2D触发器的方法,不然不会触发 3D触发器:OnTriggerEnter、OnTriggerExit、OnTriggerStay 2D触发器:OnTriggerEnter2D、OnTriggerExit2D、OnTriggerStay2D 碰撞器:OnCollisionEnter、OnCollisionExit、OnCollisionStay
七.Unity资源导入导出
unity资源商店:Window -> Asset Store-> Search Online -> 找到合适的资源 -> 添加到我的资源
-
导入资源商店资源
Window -> Pack Manager -> My Asset -> download -> Import -
导入桌面文件
选择资源直接拖动到Asset目录下