1、参考链接
2、unity概念
它是一套具有完善体系与编辑器的跨平台游戏开发工具,也称之为游戏引擎。游戏引擎是指一些编写好的可重复利用的代码与开发游戏所用的各功能编辑器。
3、unity界面
右上边可以切换布局。
左边选择Shaded wireframe,可以看到3D物体的都是由三角形组成的。
4、坐标系
Unity使用左手坐标系。
空间中统一的坐标系叫世界坐标系,每个物体有自己的本地坐标系,该坐标系为相对于父级物体的位置而不是世界坐标系的位置。
5、物体显示
网格(三角形构成)+ 材质
6、资源商店
Windows -> Asset Store
挑出喜欢的资源之后,点击”添加至我的资源”。
然后在Unity的Window -> Package Manager中找到刚才的资源。
点击下载之后再导入到untiy中。
7、旋转XYZ坐标系
选中“手形”按钮,然后按住Alt键,此时拖动鼠标即可旋转xyz坐标系。
8、创建地形
(1)创建地形
(2)地形的设置
(3)创建相邻地形
(4)绘制地形
一般先通过“Set Height”功能设置全局的高度,然后再通过“Raise or Lower Terrain”来抬高或者降低地形,就可以绘制高山和峡谷了。
(5)绘制纹理
首先,下载unity的资源包
然后,绘制纹理
创建地形层:
Edit Terrain Layers -> Create Layer,选择一个素材后地形如下:
可再添加一个地形层,用于绘制道路如下:
接着,绘制树
按住鼠标右键,然后通过A、W、S、D按键可以切换观察的视角。
9、组件
在Unity中,功能基本上都是由组件来实现的。如果想要一个物体移动,那么为它添加一个有移动功能的组件就可以了。
每个游戏的物体都是一个空物体,它之所以表现为不同的形式,都是由它的组件表现出来的。由于组件(cube组件、light组件)不同,所以表现出来的形态也不同。
(1)添加系统提供的组件
选择物体后,通过右下角的“Add Component”功能,选择Rigidbody组件,然后选择执行,那么该物体就会垂直下落。
(2)自定义组件
创建C#脚本,然后放到物体下面就可以了。
10、脚本的生命周期
创建一个脚本之后,会看到默认的两个方法Start()和Update()方法。
全部的生命周期方法为:
Awake:最早调用,一般可以在此实现单例模式
OnEnable:组件激活后调用,在Awake后会调用一次
Start:在Update之前调用一次,在OnEnable之后调用,可以在此设置一些初始值
FixedUpdate:固定频率调用方法,每次调用与上次调用的时间间隔相同
Update:帧率调用方法,每帧调用一次,每次调用与上次调用的时间间隔不相同
LateUpdate:在Update每调用完一次后,紧跟着调用一次。
OnDisable:与OnEnable相反,组件未激活时调用
OnDestory:被销毁后调用一次
在方法中打印日志使用Debug.Log(“”);
然后在Window -> General -> Console 看到日志输出
11、脚本的执行顺序
如果针对一个物体创建了两个脚本,在默认情况下脚本的执行顺序是不定的。
有两种方法可以指定方法的执行顺序。
方法一:
在每个脚本不同的生命周期函数中编写功能,比如脚本1的Awake函数中执行功能1,脚本2的Start函数中执行功能2,这样可以保证先执行功能1,再执行功能2。
所有的脚本都是按照生命周期,先执行完所有的Awake函数,再执行所有的OnEnable函数,依此类推。
方法二:
直接指定各个脚本的优先级。
12、标签和图层
标签的作用:一般是自己用的,可以用来区分每个的角色,比如是敌人还是玩家。
图层的作用:一类内容,通过图层可以判断哪一类显示,哪一类不显示。比如某个图层的物体需要检测碰撞,而另一个图层的内容( 比如地面)不需要检测碰撞。
13、向量的概念
标量:只有大小的量,1 85 888 999
向量:既有大小,也有方向
向量的模:向量的大小
单位向量:大小为1 的向量
单位化、归一化:把向量转为单位向量的过程。
向量的点乘:A向量 点乘 B向量 = 数值n = |A||B|cos&,得到两个向量之间的夹角。
14、预制体与变体
现在做了如下的物体(总共由4个部分组成),
假如现在需要4个这种物体,
如果在SampleScene界面直接再复制3个出来,那么假如这个物体需要改动,那么需要改动4个物体,怎么才能只修改一个物体,其他的同步生效?
这就需要用到预制体。
把物体从SampleScene复制到Assets中,然后再复制3个Enemy到SampleScene中,如下图所示:
此时如果修改Assets中的Enemy,则直接双击进行修改,修改完成后所有的都会生效。
所有都生效如下图所示:
现在有新的任务:需要新增一个物体,新物体比之前4个物体只增加一顶帽子,其他的部分需要与之前4个保持一致。即除了帽子外,4个物体做了改动,当前新物体也需要同步做改动。此时需要用到变体的功能。
当在SampleScene中创建了新物体,然后拖动到Assets时提示如下,选择Prefab Variant(预制体变体)。
此时在Assets的Enemy中做修改,5个会同时生效,比如把红色嘴巴变小了之后,
此时,预制体修改会影响变体,但是变体修改不会影响预制体。
15、脚本中Vector3的作用
第一,Vector3可以表示:
1)向量(坐标)
Vector3 v = new Vector3(1, 1, 1);
2)旋转
Vector3 v = new Vector3(45, 90, 0);
3)缩放
Vector3 v = new Vector3(1, 1, 0.5f);
第二,系统提供的静态初始化方法
v = Vector3.zero;
第三,计算两个向量之间的关系
// 向量,坐标,旋转,缩放
Vector3 v = new Vector3(1, 1, 0.5f);
v = Vector3.left;
Vector3 v2 = Vector3.forward;
// 计算两个向量的夹角
Debug.Log(Vector3.Angle(v, v2));
// 计算两个向量的举例