DearMulad

导航

实训

准备

1.安装VS2022

2.安装Unity Hub

3.安装Unity2018.4.8f1

制作笔记

 

一个组件或多个组件组成一个游戏对象,一个游戏对象或多个游戏对象组成一个场景,一个场景或多个场景组成一个项目。

游戏对象相当于组件的容器,组件赋予游戏对象不同的特效。

 

Assets:储存所有的资源文件如图片、脚本、音乐、模型等。

Project Setting:储存整个工程相关设置。

Library:储存文件之间链接资源设置文件。

Temp:存储中间文件。

 

Plugins:存放基于C#语言编写的插件,unity插件。

Resources:存可调用ResourcesLoad()加载的资源。

Editor:存放有关编辑器脚本,unity启动时运行。

 

数值类型:整型int;浮点型float,double

非数值类型:字符类型:char;字符串类型:string;布尔类型:bool,ture,false

字面值+后缀知类型:1.5表示double类型;1.5f或者1.5F表示float类型

 

Position:世界坐标,transform的位置

localPosition:父级位置

eulerAngles:旋转角度

localEulerAngles:相对父级旋转

 

rotation:世界坐标系物体变换角度Quaternion

parent:返回物体父级

root:返回最高层次

 

GameObjet

GameObject类继承于Object类,是Unity场景里面所有实体的基类

name:游戏对象的名字

tag:游戏对象的标签

activeSelf:标识游戏对象是否激活

layer:游戏对象所在的层

 

SetActive(bool value)----设置游戏物体及子物体的状态

Find(string name)----找到返回一个名字为name的激活的游戏对象

FindWithTag(string tag)----返回一个标签为tag的激活的游戏对象

FindGameObjectsWithTag(string tag)----返回一个标记为tag的激活游戏对象的列表

 

获取游戏对象有三种方法:

通过对象名称获取:objCube=GameObject.Find("Cube");

通过tag标签获取单个游戏对象:objCube=GameObject.FindWithTag("Finish");

通过游戏标签获取多组游戏对象:objCube=GameObject.FindGameObjectsWithTag("Finish");

Destroy函数可以销毁单个组件,而不会影响GameObject本身

Transform

position----在世界坐标系中,transform的位置

localPosition----相对于父级变换的位置

eulerAngles----旋转作为欧拉角度

LocalEulerAngles----相对于父级的变换的旋转欧拉角度

rotation----在世界坐标戏中物体变换的旋转角度作为Quaternion存储

parent----返回物体变换的父级

root----返回最高层次

Quaternion

Quaternion(四元数)用于计算Unity旋转。它们计算紧凑高效,不受万向节锁的困扰,并且可以很方便快速地进行球面插值。 Unity内部使用四元数来表示所有的旋转。

Quaternion是基于复数,并不容易直观地理解。 不过你几乎不需要访问或修改单个四元数参数(x,y,z,w); 大多数情况下,你只需要获取和使用现有的旋转(例如来自“Transform”),或者用四元数来构造新的旋转(例如,在两次旋转之间平滑插入)。

欧拉角表示法

假如你使用一组欧拉角表示旋转,XYZ三个参数代表相应轴向按照顺归YZX的旋转,因此(0、90、90)代表先进行+Z轴旋转90度,再沿着+Y轴进行90度旋转,更多详细内容可以参考前述文章

前方上方矢量界定法

编程过程中,大部分需要明确指定方位的时候就需要使用这个方法。要确定一个朝向,我们可以使用两个向量来确定:即前方矢量和上方矢量。当一个朝向的前方和上方确定之后,这个朝向也就完全确定了。举例来说,如果现在只提供一个朝向,就是你现在面朝北方,那么这个方向已经完全确定了吗?显然没有。因为你右侧躺在地上,看向北方,还是在面朝北方,这时候就需要另外一个矢量,也就是上方。当给出上方之后,这个朝向就完全确定了。

在Unity中,我们很多时候,不需要给出严格的上方朝向。比如,仍然是上面那个例子,如果我面朝北方,先给出(0,0,1)代表我的前方矢量。那么,如果我给出的方向不是严格的上方矢量,比如是(0,0.5,0.5),是否可以?答案也是可以的,因为这两个矢量显然已经确定了一个方向,前方是严格的,而实际的上方可以通过前方朝着你给出的上方矢量旋转90度得出。也就是说,你给(0,1,0)作为上方矢量,和给出在下图中弧度范围内(不包含+Z和-Z)所有方向的矢量都是相同的结果。

Input

键盘输入

GetKey:按住指定按钮时,返回true

GetKeyDown:按下指定按钮那一帧返回true

GetKeyUp:释放所指定的按键那一帧返回true

鼠标输入

GetMouseButton 按住指定鼠标按钮时,返回true

GetMouseButtonDown 按下指定鼠标按键的那一帧返回true

GetMouseButtonUp释放指定按钮的那一帧返回true

Time

Time.time----从游戏开始时计时,截止到目前共运行的游戏时间,受Time.scale影响,游戏暂                       停时该时间不增加

Time.timeScale----时间流逝的速度,当该值为1f时表示和现实中的时间流逝一致,当该值设                                 为0.5f时,表示真实时间逝去1秒时,游戏时间仅逝去0.5秒,当该值为2f表                                示真实时间逝去1秒时,游戏时间逝去2秒

Time.DeltaTime----上一帧所消耗的时间

Time.fixedTime----每一次执行FixedUpdate()函数的时间间隔,可通过导航菜单栏”Edit“》”                                Project Settings“》”Time“菜单项设置

Time.fixedDeltaTime----固定更新上一帧所消耗的时间

Time.realtimeSinceStartup----从游戏开始时计时,截止到目前共运行的真实时间,不受                                                   Time.scale影响,游戏暂停时该时间仍然增加

 

posted on 2023-09-07 19:44  Orliss  阅读(70)  评论(0)    收藏  举报