实训
准备
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影响,游戏暂停时该时间仍然增加
浙公网安备 33010602011771号