前言:

本片博客为学习《Unity3D游戏设计与开发》(曹晓明)而做下的学习笔记。

Unity版本:2020.1.3f1c1


1.熟悉游戏物体和组件

Untiy世界由各种游戏物体组成,如摄像机、灯光、声音、3D物体等。每个物体都需要添加组件才能获得相应的属性,其中每个物体都有Transform组件(UI是Rect Transform组件)。可以将游戏组件与人的属性进行对比记忆,如下表:

现实世界 Unity世界
游戏角色
地理位置 Transform
受到重力 Rigbody
感知碰撞 Collider
外貌不同 Mesh Render
听到声音 Audio Listener
说话 Audio Souce
动作 Animtor
其他技能 赋予特定的脚本
... ...

 

知识点:

任务 知识点
游戏物体基本特性及相关操作

1.创建游戏物体:GameObject.CreatPrimitive()

2.获取游戏物体:GameObject.Find()

3.变换游戏物体:GameObject.Translate()

4.克隆游戏物体:Instantiate()

5.销毁游戏物体:Destory()

组件基本特性及相关操作

1.添加组件:gameObject.AddCompent<组件名>()

2.获取组件:gameObject.GetCompent<组件名>()

3.禁用组件:gameObject.GetCompent<组件名>().enable=fasle


1)同类或相关的游戏物体为方便管理,通常放到一个空物体下。

2)代码创建游戏物体:灵活性高,可以在游戏需要时动态创建。

3)transform.Translate(Vector3 vector3);相当于transform.position+=vector3;

4)更改物体的大小:transform.localScale=new Vector3(x,y,x);   x,y,z分别代表奥X轴,Y轴,Z轴的缩放,也可以通过乘以某个float的值实现整体按比例缩放。

5)旋转游戏物体:transform.Rotate(Vector3 vector3);

6)修改材质类型颜色:gameObject.GetCompent<Render>().material.color=Color.red;

7)移除组件:没有RemoveCompent()方法,可以通过Destory(组件名)的方法来移除。例如移除重力组件:Destory(gameObject.GetCompent<Rigboby>())。

案例实战:AlphabetGame

tips:

1)2D物体通常用Sprite来展示,我们导入图片是无法直接Sprite的Sprite Render属性中的,因为这些图片的属性并不是Sprite,需要将其转为Sprite格式(选中已导入的图片,将其Texture Type更改为Sprite(2D and UI));

2)Random.Range()函数的使用;

3)Sprite的渲染层级的设置;

4)静态变量的使用。


2.UGUI系统

UGUI的知识点结构:

Unity学习

根据功能不同也可进行分类:

可视化元素

Text:文本

Image:图片

Raw Image:原始图片

交互元素

Button:按钮

Toggle:开关

Slider:滑动条

Scrollbar:滚动条

DropDown:下拉列表

InputFile:输入框

载体元素

Canvas:画布

Plane:面板

Scroll View:滚动视图

事件系统 Event System

 


1)Canvas(画布)

Canvas是所有UI元素的载体,即所有UI游戏物体都是他的子物体,同时也决定了UI如何被渲染出来。Canvas有三个重要的组件:Canvas组件、Canvas Scale组件、Graphic Raycaster组件

  • canvas组件

该组件中,最重要的参数是Render Mode,他决定了UI如何渲染出来。

参数
Render Mode(渲染模式:决定了UI如何被渲染出来)

Screen Space - Overlay(屏幕空间-覆盖模式):此模式下画布始终位于最前方,“覆盖”所有3D场景,摄像机的设置不影响画布的渲染。Rect Transform的大小会随着屏幕尺寸或分辨率改变。

Screen Space - Camera(屏幕空间-摄像机模式):

World Space(世界空间模式):当UI作为场景中的一部分时可以使用该模式,画布和其他在3D世界中的游戏物体具有相同的属性

Pixel Prefect(像素对应) 勾选能使UI元素的像素对应起来,达到抗锯齿、使图形边缘更加平滑的效果。当Render Mode为World Space时不存在该选项
Render Camera(渲染相机) Screen Space - Camera模式下需指定UI组件渲染的相机,当摄像机的Projection(投射方式)为Perspective(透视模式)时,画布中的UI元素会受Fiel of View的影响。(一般指定为Orthographic)
Event Camera(事件相机) 即使没有指定Event Camera,该画布仍能显示在屏幕上。Event Camera能够指定一个相机来接受事件,也可以通过画布上的Graphic Raycaster组件发射射线来产生事件。
Sort Order(渲染顺序) Int属性,指明Canvas的渲染顺序,值越大则Canvas的渲染越靠前。
Plane Distance(画布距离) 画布始终位于摄像机前方固定距离的平面。当3D物体比UI更靠近摄像机时,物体会显示在UI的前方。
Sorting Layer(渲染层级顺序)  需要Render(渲染器)渲染的都有该属性,可以手动添加层级,排在前面的先渲染,后面的Layer会覆盖前面的Layer。
Additional Shader channels(附加渲染通道) 与Shader通道有关很少用到

 

  • canvas scale组件

画布缩放器组件用于控制画布的整体比例和UI的像素密度,会影响画布下的所有内容,包括字体大少和图像边框。其UI Scale Mode(UI比例模式)有三种,会影响画布中UI元素的缩放效果。

(1)Constant Pixel Size(恒定像素大小):这是默认的比例模式,无论屏幕大小如何,UI元素都保持相同的像素大小。

参数
Scale Factor(比例因子) 通过此因子缩放画布中的所有UI

Reference Piexl Per Unit(参考每单位像素数)

如果是精灵中的“每单位像素数”设置,精灵中的一个像素将覆盖UI中的一个单位(我的理解:每个单位由这么多的像素覆盖)

(2)Scale With Screen Size(根据屏幕尺寸缩放):UI元素会随着屏幕寸尺的改变而改变。

参数
Reference Resolution(参考分辨率) UI布局设计的分辨率。如果屏幕分辨率较高,则UI按比例放大;如果屏幕分辨率较低,则UI按比例缩小。
Screen Mach Mode(屏幕比配模式)

Match Wight or Height(匹配宽度或高度):此时可以调整Match参数来确定缩放是以宽度、高度或是基于两者之间进行缩放;

Expand(扩大):水平或垂直的展开画布区域,因此画布的大小永远不会小于参考;

Shrink(收缩):水平或垂直裁剪画布区域,因此画布的大小永远不会大于参考。

Reference Piexl Per Unit(参考每单位像素数)

如果是精灵中的“每单位像素数”设置,精灵中的一个像素将覆盖UI中的一个单位(我的理解:每个单位由这么多的像素覆盖)

 

(3)Constant Physical Size(恒定物理尺寸):无论屏幕大小和分辨率如何,UI始终保持相同的大小。

参数
Physical Unit(物理单位) 用于指定位置和大小的物理单位
Fallback Screen DPI(后背屏幕DPI) 如果屏幕DPI未知,则假设DPI
Default Sprite DPI(默认的SpriteDPI) 当一个Sprite有Pixels Per Unit属性并匹配Refence Pixels Per Unit属性时所采用的DPI

tips:

DPI(dot per inch):屏幕每英寸所包含的像素个数,可以反映屏幕的清晰度。

ppi(pixel per inch):图像的采样率,即在图像中,每英寸所包含的像素个数。

Resolution(分辨率):屏幕纵横方向像素个数。

  • Graphic Raycaster(图像射线)组件

该组件主要用于UI的射线检测。

参数
Ignore Reverse Graphics(忽略反转的图像) 默认勾选该项,当UI展示背面时,不会接收到射线检测。
Blocking Objects(屏蔽的物体)

屏蔽指定类型的物体,使它们不参与射线检测,常用来解决UI穿透问题。可选值:

None:不屏蔽任何物体。

Two D:屏蔽有2D碰撞器的物体。

Three D:平别有3D碰撞体的物体。

All:屏蔽所有物体。

Blocking Mask(屏蔽的层) 屏蔽指定的层,使它们不参与射线检测。当Blocking Objects不为None时,该项才起作用。

 


2)Image

Image用来显示图片,,同时能够设置属性使图片呈现多种效果。

参数
Rect Transform(矩形变换) 位置、Anchor以及Pivot信息
SourceImage(图片源) 指定要显示的目标图片资源,它只支持Sprite类型的图片
Color 设置图片显示的色调
Image Type(图片的显示类型)

Simple(简单填充):如果Image的大小与Sprite不同时,Sprite会被拉伸到与Image空间一样大(可以勾选Preserve Aspect,Sprite会根据Image原高宽比例进行缩放)

Sliced(切片类型):成为九宫格的图片才设用于Sliced类型,缩放过程中,四个角的切片不缩放,四条边做拉伸,中间部分做缩放操作。(取消勾选图片的Fill Center,Image只会显示图片的边缘部分)

Tiled(平铺类型):同样普通的Sprite无法使用此类型,需清除Sprite的Packing Tag,同时将Wrap Mode改为Repeat。在Image区域内保持原有大小重复绘制直至填满该区域。

Filled(填充类型):  
   

 

 

 

 

相关文章:

  • 2021-10-10
  • 2021-08-06
  • 2021-09-30
  • 2021-04-11
  • 2021-05-17
  • 2021-11-06
  • 2021-12-04
  • 2021-07-18
猜你喜欢
  • 2021-05-08
  • 2022-12-23
  • 2021-12-21
  • 2021-09-28
  • 2021-06-19
  • 2021-06-20
相关资源
相似解决方案