Unity-Learn02(场景Scene、游戏对象GameObject、组件Component)
@TOC
前言
刚进公司,需要学开发需要的新框架及现成框架,完成自己的需求。那么在此期间,遇到新东西,就可以以此为基础,学习新语言新框架新工具…,总结一下,以供后面参考学习,查看。肯定大家都有一定差异啦,大家作为参考哦,与诸君共勉。
一、咱们开发,开发的是Component,组件。
- GameObject,是容器【游戏中的物体可以看作是容器】,来装组件的。
- 运行时出现在场景中的游戏物体就是游戏对象 GameObject,例如:人物、地形、树木 …..
- 游戏对象 GameObject是一种容器,可以挂载组件。
- 父、子物体,在Hierarchy面板中,将一个物体拖拽到另外一个物体中子物体将继承父物体的移动,旋转和缩放属性,但子物体不影响父物体
- 创建空物体:GameObject-Create Empty
- 一个组件Component就是一种功能,GameObject容器中装了什么组件就说明这个游戏对象GameObject具有什么功能。
- 组件Component是游戏对象的功能模块
- 每个组件都是一个类的实例
- 一个场景有很多游戏对象GameObject,一个游戏关卡就是一种场景
- 场景 Scene,一组相关联的游戏对象的集合,通常游戏中每个关卡就是个场景,用于展现当前关卡中的所有物体。
- 坐标
- 坐标:X红色、Y绿色、Z蓝色。
- 世界坐标: 整个场景的固定坐标,不随物体旋转而改变
- 本地坐标:物体自身坐标,随旋转而改变
1.做开发时有些常见的选项需要了解:
- Transform位置,旋转和缩放比例。【Transform 变换组件:决定物体位置、旋转、缩放比】
- mesh filter决定形状,至于是什么形状,就要看mesh filter中的值了(可以去随意更换)【Mesh Filter 网格过滤器:用于从资源中获取网格信息】
- 创建网格过滤器:Component-Mesh-Mesh Filter,设置Mesh属性
- mesh Renderer负责渲染,渲染的话需要显卡哼哧哼哧为他消耗性能,mesh Renderer中的Materials决定他的外观。这就是引擎带来的好处,让咱们开发人员有一种动态修改代码的感觉【Mesh Renderer 网格染器:从网格过滤器中获得几何形状,再根据变化组件定义的位置进行渲染。】
- 网格过滤器与网格渲染器 联合使用,使模型显示到屏幕上
- 创建网格渲染器:Component-Mesh-Mesh Renderer
- 设置材质Materials属性
2.Project、Scene、GameObject、Component四个的包含关系如下:
- Project
- Scene1
- Scene2
- Scene3
- GameObject1
- GameObject2
- GameObject3
- Component1
- Component2
- Component3
3.经典的书籍
- 代码大全
- CLR Via C#、C#入门经典
- Unity4.X,可能会有更新版,当作字典书
- 3D数学基础
4.实践出真知:
- 1.进行一个需要3D拼接的物体时,可以利用每个组件生成的位置都是在屏幕中心,你可以只调整大小方向
- 拼接的物体,没有关系你移动着,独立之间没啥关系,形成父子关系后,移动父的,子的跟着移动
- 打组,形成父子物体,可以一块移动,一块旋转…
- 想让A和B一块移动,打个组呗,管你A或者B是啥呢,两个物体或者一个照相机一个物体等,都可以,只要是想一起移动就可以打个组【或者这样说,想让A和B一块移动,打个组呗,管你A或者B是啥呢,两个物体或者一个照相机一个物体等,都可以,只要是想一起移动就可以打个组。咱们Unity中一般想要物体或者说主角和摄像机一块移动,就把这俩放到同一个组里面,有同一个爸爸就行】
- 经常用,比如人,这个游戏对象,东西,我想让这个人可以移动,就给这个人加个移动的组件,如果我想让这个人可以开车,就给这个人加个驾驶的组件…。后来,美工说模型得换。模型一换,只能换个新模型,,模型身上带的组件都没了所以,有个小技巧:【一般咱们搞一个空物体的父容器或者父游戏对象】,相对而言,此时,人的那些组件可以认空物体或者空容器为父,那些人需要的功能都挂到空物体这个父游戏对象或父容器上,不要挂到人上,然后,让人和代表功能的组件们都保持000的世界坐标,在一起呗
- 用Layer去进行隐藏、过滤
- 上来先调大小,再调X、Y,不然调到哪你都不知道了
- 2.八股概念补充:
- 物理着色器:基于物理特性的Shader是Unity 5.x的重大革新之一,所谓物理着色器(Physically Based Shading,PBS)就是遵从物理学的能量守恒定律,可以创建出在不同光照环境下都接近真实的效果
- Shader就是美艳特效相机
- 有时候需要特效,所以需要公司其他部门或者自己写一个shader,其实影荃仓觉跟个类库差不多
- 纹理、着色器与材质的关系:
- 材质,这个东西,是给到物体的mash render中的…
- 物体轮廓。可以通过创建材质 Outline、指定着色器 BasicOutline、指定纹理 Texture、设置到物体中
- 两个物体共用一个材质,那么其中一个颜色形状大小变了,另一个也跟着变了
- 不同的Shader决定了Material中的Main Maps中不同的属性,这些属性大体上有颜色呀,材质呀等等
- 你拖给物体,这个容器一个图片等类似的资源,unity自动会为物体生成一个材质meterial,本质还是,你拖一个图片等资源给物体,相当于让unity把这个unity自动帮你生成的meterial材质给到物体的Mesh Render
- 逻辑关系要理清,游戏物体是容器,装组件的,而组件具有Mesh Render,Mesh Render具有Meteriar属性,可以接纳你创建的新材质【就是你创建的Meterial,颜色属性,搭配】
- Main Maps:
- Albedo 基础贴图:决定物体表面纹理与颜色
- 物体的Mesh Render组件中的材质专有位置,或者说专有空间,就是上面的Main Maps中的Albedo
- project->create->material,然后添加到mesh renderer,这个步骤就是添加颜色,说的正式一点就是添加颜色材质
- Metallic 金属:使用金属特性模拟外观。
- Specular 镜面反射:使用镜面特性模拟外观。
- …
- Albedo 基础贴图:决定物体表面纹理与颜色
- 材质,这个东西,是给到物体的mash render中的…
- Shader —> Material —->GameObject
- Shader决定Material具备哪些属性,Texture与Color是Material的属性之一,设置好后的Shader是material的属性之一,设置好后的Material用以渲染最后GameObject
- 基于物理特性的Shader是Unity 5.x的重大革新之一,所谓物理着色器(Physically Based Shading,PBS)就是遵从物理学的能量守恒定律,可以创建出在不同光照环境下都接近真实的效果
- 也就是让游戏里面的角色更真
- Material相当于父类,Shader类似于接口
- 基于物理特性的Shader是Unity 5.x的重大革新之一,所谓物理着色器(Physically Based Shading,PBS)就是遵从物理学的能量守恒定律,可以创建出在不同光照环境下都接近真实的效果
- Material
- 材质:物体的质地,指色彩、纹理、光滑度、透明度、反射率、折射率、发光度等。实际就是Shader的实例。
- Shader 着色器:专门用来渲染3D图形的技术,可以使纹理以某种方式展现。实际就是一段嵌入到渲染管线中的程序,可以控制GPU运算图像效果的算法
- Rendering Mode:渲染模式,
- Opaque 不透明,默认选项。
- Transparent 透明,用于半透明和全透明物体,如玻璃。
- Cutout 镂空,用于完全透明或完全不透明物体,如栅栏
- Fade 渐变,用于需要淡入淡出的物体。
- Rendering Mode:渲染模式,
- Texture 纹理:附加到物体表面的贴图
- 总结: Shader、材质、物体的相互联系,材质能改变物体的着色、透明度、发光度【材质能干这个事就是因为材质的Shader面板中的设置,你Unity软件中设置Shader的面板就是在设置材质的面板,Shader就是一段程序【咱们用自己写的,别人写的既成的Shader,咱们得先做一个材质,然后把Shader拖进去,Shader是拥有这些功能的,这些功能需要具体的数据,而这些数值需要材质的面板给与,材质把数值给物体的mesh render,mesh render再进一步负责具体的渲染与显示】,材质就是给Shader设置具体数值的一个面板】,不能直接把材质给物体,必须先给物体的mash rander组件
- Shader决定Material具备哪些属性,Texture与Color是Material的属性之一,设置好后的Shader是material的属性之一,设置好后的Material用以渲染最后GameObject
- Texture/Color —> Material —->GameObject
- 摄像机
- 向玩家捕获和显示世界的设备,附加了摄像机Camera组件的游戏对象,
- 场景中摄像机的数量不受限制
- 使用天空盒【围绕整个场景的包装器,用于模拟天空的材质。】
- 天空盒材质种类: 6 Sided,Procedural,Cubemap
- 设置摄像机 Clear Flags 属性为 Skybox,
- 方式一:摄像机添加组件 Skybox
- 方法二:光照窗口。Window - Lighting -Environment Lighting – Skybox可作为反射源将天空色彩反射到场景中物体。
- 去掉空白部分-特别常用的一个操作【不单单用于去掉空白部分】,两个摄像机,在渲染物体时,你渲染你的,我渲染我的,我现在想让两个画面叠加在一个画面中,也就是等效于想让空白部分不显示了,其中深度值高的摄像机对应的Clear Flags【深度值要大于主摄像机,不然就没了】设置为Depth only,Clear Flags设置为Don’t clear,屏幕容易花屏,所以一般不用
- 原来,比如说有两个摄像机,各自渲染各自的,现在想让这两个摄像机渲染的物体叠加到同一个屏幕中[也就是希望空白部分不显示了],就把Clear flags设置为Depth only,就实现空白部分不做渲染。只渲染有物体的部分,看起来是一个摄像机渲染出来的,其实是两个。
- 没必要同一个场景,让多个摄像机渲染,渲染一次就行了,不然性能损耗太大
- 物理着色器:基于物理特性的Shader是Unity 5.x的重大革新之一,所谓物理着色器(Physically Based Shading,PBS)就是遵从物理学的能量守恒定律,可以创建出在不同光照环境下都接近真实的效果
巨人的肩膀
- 周志明老师的凤凰架构
- C#高级编程
- C#函数式编程
- 叩响C#之门
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.


