从零开始的unity3d入门教程(二)----基本功能讲解
文章目录
- 从零开始的unity3d入门教程(二)----基本功能讲解
 - 一、教学目标
 - 二、Unity界面的摆放与介绍
 - 1、Unity界面移动及复原
 - (1)窗口移动方式
 - (2)窗口初始化方法
 
- 2、平常工作界面
 - (1)Layouts转换成2 by 3类型
 - (2)最终工作窗口如下
 
- 3、各个窗口的中文名及其功能简述
 
- 二、游戏物体GameObject的创建与修改
 - 1、创建一个正方体
 - 2、3D Object介绍
 - 3、3D Object创建练习
 - 4、Cube Object Transform属性修改练习
 - (1)选定Scene中的对象
 - (2)删除Scene中的对象
 - (3)Scene窗口基本操作练习
 - (4)Cube对象的Transform组件修改
 - (5)Cube对象的Transform组件属性快捷键修改
 
- 三、常用功能与组件介绍与练习
 - 1、Gizmo 导航器
 - 2、场景布置常用操作与组件
 - (1)复制物体
 - (2)光照设置
 - (3)主摄像头
 - (4)利用切换视图与角点吸附搭建场景
 - a、不断转换视角搭建场景
 - b、角点吸附搭建场景
 
- 四、搭建游戏场景,诸葛亮的八卦阵!
 - 1、保存搭建地图参考图
 - 2、新建空对象并改名与地面
 - 3、将地图参考图 导入Unity3d项目
 - 4、创建Cube按照地图参考图摆放
 - 5、生成迷宫预制体
 - (1) 新建一个空物体命名为迷宫,并列入刚刚的建模模型
 - (2)将迷宫拖拽到prefab文件夹内
 
- 五、玩家创建
 - 1、玩家 Player!
 - 2、创建一个实现玩家移动控制功能的C#文件
 - 3、将MoveControl脚本添加进Player
 - 4、给Player添加刚体组件
 - 5、靠前人称摄像头设置
 - (1)让摄像头的position与Player的position一致
 - (2)调整下摄像头的角度与Field of View 视场
 - (3)令Main Camera成为Player的子对象
 
- 六、游戏音效添加
 - 1、免费音乐资源网站推荐
 - 2、下载音乐,并将其加载进Unity中
 - 3、添加游戏音效
 
- 七、开始运行游戏与游戏导出
 - 1、运行测试
 - 2、游戏导出
 
- 八、结语
 
一、教学目标
独立搭建出一个简单场景,并基于该场景开发一个简单的靠前人称3D游戏
2、平常工作界面
(1)Layouts转换成2 by 3类型
- Window–>Layouts–>2 by 3
 - 移动Project窗口到Hierarchy窗口下
 - 打开Console窗口并让其与Projecy窗口并列
Window–>General–>Console
注:这个指令当窗口消失时候,会新建一个新的,当窗口存在的时候则选定这个窗口 
(2)最终工作窗口如下
移动并调整下各个窗口的宽高
 令各个窗口摆放位置一般如下
3、各个窗口的中文名及其功能简述
- Hierarchy 层级窗口:可以看到Scene中物体的层级关系
 - Scene 场景窗口:可以查看/修改物体在场景中的位置
 - Game 游戏场景窗口:游戏开始之后这个画面,就是游戏画面,
可以通过调整层级窗口里的Main Camera物体来调整画面位置与角度 - Inspector 检查器窗口/属性窗口:具备选定物体,查看/修改物体属性,添加组件等功能
 - Project 项目窗口:查看该项目有哪些资源/程序
 - Console 控制台窗口:可以看程序运行报的警告/报错
 
二、游戏物体GameObject的创建与修改
1、创建一个正方体
向Unity世界发出一声HelloWorld吧,Unity世界在此刻将为你缓缓展开!
- 鼠标移动到Hierarchy窗口下的任意区域,右键3D Object -->Cube
创建成功!
注:物体创建时候,是在当前视图中心位置创建,不是在(0,0,0)点创建 
2、3D Object介绍
- 基础对象 
- Cube:立方体
 - Sphere:球体
 - Capsule:胶囊体
 - Cylinder:圆柱体
 - Plane:平面
 - Quad:四边形
 
 - 文字与动画系统 
- Text :文字
 - legacy:动画系统
 
 - 布娃娃系统 
- RagDoll:布娃娃系统
 
 - 基础地形、环境 
- Tree:树
 - Wind Zone:风
 
 
3、3D Object创建练习
最终目标图如下:
 (1)创建Cube,Sphere,Capsule,Cylinder,Quad依次排列
对象移动方式:
- 鼠标左键点击选定目标对象后,拖动坐标轴也就是那三个箭头,物体将沿着拖动的坐标轴移动
 - 鼠标左键点击选定目标对象后,拖动坐标系也就是那三个平面,物体将沿着拖动的坐标系移动
 
(2)创建Plane放在中间
 (3)创建一个Text
 (4)创建一颗树
都摆放好即可完成创建与移动练习!
4、Cube Object Transform属性修改练习
在对Cube的Transform组件修改之前需求先练习一下如下技巧。
- 选定物体练习
 - 删除物体练习
 - Scene窗口画面放大、移动、旋转角度和对象追踪的练习
 
(1)选定Scene中的对象
- 对象选定方法
- 在Scene窗口中左键点击并拖拽,最后松开,即可批量选定矩形框定的对象
 - 在Hierarchy窗口中左键选定Sphere然后再Shift+左键点击Tree,即可批量选定Sphere到Tree之间的全部对象
 - 单次选定以及取消某个对象选定方法:批量选定后,Ctrl+左键即可选定某个对象,若这个对象已被选定则取消选定。
 
 - 在Scene窗口中左键点击并拖拽,最后松开,即可批量选定矩形框定的对象
 
(2)删除Scene中的对象
界面有些嘈杂,我们将其他不是Cube和初始的Camera和Light的对象删掉吧
- 对象删除方法
- 在选定对象后,按一个在你键盘右上角附近的键:delete。即可删除所有选定的对象
 
 
(3)Scene窗口基本操作练习
Scene窗口纵深前进后退的方法:鼠标滚轮滚动 或 Alt+鼠标滚轮滚动,向前滚动窗口画面前进。向后滚动,窗口画面后退。
注:直接滚动,窗口视图是向中心前进。Alt+鼠标滚动则可以选择窗口视图向哪个方向前进
Scene窗口上下左右移动的方法:鼠标滚轮摁住拖拽,鼠标前移,画面向上、鼠标左移,画面向左等等,其他方向同理
Scene窗口以当前位置为旋转原点的角度旋转的方法:鼠标右键摁住拖拽,鼠标前移,画面向上旋转、鼠标左移,画面向左旋转等等,其他方向同理
Scene窗口以窗口中心位置为旋转原点的角度旋转的方法:Alt+鼠标左键摁住拖拽,鼠标前移,画面向上旋转、鼠标左移,画面向左旋转等等,其他方向同理
Scene窗口聚焦某个或某些对象在窗口中心的方法:选定目标对象/对象们,键盘按F
(4)Cube对象的Transform组件修改
Transform组件是整个Unity中重要的组件之一,之后也是接触最多,且属性改变带来的视觉效果也很明显,所以对Unity组件熟悉,可以从Transform组件开始。
- 将其他组件全部折叠
一开始的时候,其他组件也展开了,这样有些干扰我们的学习。一开始不用接触那么多组件,我们来将其折叠起来吧 - 展开Transform组件
注:折叠单个组件,则是点击目标组件左边的倒三角形。只有展开才能折叠,也只有折叠才能展开 - Transform组件的修改练习
目标属性修改如下 
Poition:在坐标系中的位置
 Rotation:对象旋转的角度,逆时针为正,顺时针为负
 Scale:对象的大小
- 结果图如下:
 - 修改的时候有些同学可能会发现,Scene窗口中立方体不见了,这是因为对游戏引擎来说,模型的内部由于一般看不到,所以没有渲染的必要。如果视角在里面,就会出现这种情况–穿模。只要鼠标滚轮往后滚,让Scene窗口纵深往后移,就可以看到修改后的立方体了。
 
(5)Cube对象的Transform组件属性快捷键修改
- 快捷键在Scene窗口中的位置
 - 键盘快捷键: 
- W:移动
 - E:旋转
 - R:拉伸
 - T:矩形拉伸辅助工具
注:这四个比较常用的Transform组件操作,也可以用在选定多个物体之后,批量进行操作 
 
恭喜完成针对物体的操作课程!
三、常用功能与组件介绍与练习
在正式场景搭建前,还有一个功模块Gizmo 导航器,需要学习:
1、Gizmo 导航器
导航器位置
透视视图与正交视图
- Perspective 透视视图:近大远小
 - Orthographic 正交视图 :物体的显示与距离无关。比如:一个立方体,离视野比较近的边与离视野比较远的边的长度相等。
 
Scene窗口中的视图是透视视图还是正交视图,可以在Gizmo 导航器中设置
- 注:Persp是透视视图,再点击一下,就会转换成Iso正交视图
 
三视图
y轴:Top
z轴:Front
x轴:Right- 注1:在很多Unity开发中y轴默认是三维空间中的高度,z轴是默认是前进后退,是正面。x轴是侧面
 - 注2:点击Gizmo中的哪个轴就切换到哪个视图。
 
2、场景布置常用操作与组件
在正式开始布置场景前,还需要注意:如何复制物体、光照设置、主摄像头、如何利用切换视图搭建场景
(1)复制物体
- 以上视图就是,先将透视视图 转换 成正交视图,再点x轴转换成各种xyz视图,或在移动下视图,看一下其他角度等等,然后移动Cube到合适位置
 
b、角点吸附搭建场景
- 按V的同时选定方块上的某个角点按住开始拖拽,可以感受到,Cube移动不再是连贯的而是跳动的,目标从一个角点到另一个角点。松手之后,一开始选定的Cube的角点,就会和松手前选定吸附角点重叠。物体也就移动好了。
 
四、搭建游戏场景,诸葛亮的八卦阵!
1、保存搭建地图参考图
- 保存地图参考图
网络上流传的八卦阵图纸 
我们开始搭建场景吧,以第二个图为主,中间的亭子就用一个胶囊体代替。
 将第二个图片,另存为在电脑里面
2、新建空对象并改名与地面
- 在Hierarchy窗口下创建九个Empty并改名如下
- 注1:鼠标移动到地面那一行,右键创建一个Cube,这样Cube的层级就归在地面下面了
 - 注2:也可以在外面创建,然后拖拽新建的Cube到地面那一行,并松手也可以让Cube成为地面的子对象
 - 注3:将已经是地面子对象的Cube拖拽到空的地方松手,就可以将其移出
 
 
3、将地图参考图 导入Unity3d项目
新建一个imgs的文件夹
将地图参考图 导入Unity3d项目
- 将方块贴图修改为图片
 - 最终成果图如下
 
4、创建Cube按照地图参考图摆放
完成北面墙壁的效果图如下:
- 搭建场景时Scene窗口的视图修改为正交视图。
 - 主要使用操作:Ctrl+D 复制方块 —》 W 移动方块 —》T 拉长/压缩方块 —》Ctrl+D 复制方块 —》 W 移动方块 —》 …
当需要旋转的时候就 E 旋转方块,按住V再利用角点吸附拼接方块
最终图如上 
5、生成迷宫预制体
为了让整个墙与地面成为一个整体,可以自由缩放,旋转而不影响结构,我们需要将其制成一个prefab 预制体。
(1) 新建一个空物体命名为迷宫,并列入刚刚的建模模型
- 新建一个文件夹prefab
 
(2)将迷宫拖拽到prefab文件夹内
- Start():该函数程序运行开始会运行一次
 - update():每次周期都会运行一次
所以初始化一般会放在Start中,每次都需要修改比如这次的移动控制则需要放在update中 
具体实现代码以及注解如下:
using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine;  public class MoveControl : MonoBehaviour {     // Start is called before the first frame update     //注:所有的有小数的数字后面都要加f,表示是float数据类型     public float speed = 8.0f;     public float Rotatespeed = 60.0f;     void Start()     {         Application.targetFrameRate = 60;//设置帧率为60帧率         //注:设置帧率为60帧,表示游戏会尽量把帧率往60帧靠近,不是固定60帧     }      // update is called once per frame     void update()     {         KeyControl();     }    private void KeyControl()     {         //Translate是transform组件中自带的修改自身position属性的函数,在原有的基础上进行加处理         //Time.deltaTime :记录每帧的用时         //distance(一帧 移动距离)=speed(速度) * Time.deltaTime(一帧时间)          //Translate(x,y,z,type):加的x,y,z值,由于一般设定z轴为前方,所以加z即可,Space.Self表示使用自身坐标系,这个下一章教材会讲解                   if (Input.GetKey(KeyCode.W))         {             this.transform.Translate(0, 0, speed * Time.deltaTime, Space.Self); //W 前进             Debug.Log(speed * Time.deltaTime);         }          if (Input.GetKey(KeyCode.S))         {             this.transform.Translate(0, 0, -speed * Time.deltaTime, Space.Self);//S 后退         }          //Rotate是transform组件中自带的修改自身属性的函数,在原有的基础上进行加处理         //逆时针为减法,顺时针加法         //y轴是top,旋转一般是人头往左或往右,所以一般我们默认以y轴为旋转轴         if (Input.GetKey(KeyCode.A))         {             this.transform.Rotate(0,  -Rotatespeed * Time.deltaTime, 0,Space.Self);//A逆时针旋转         }         if (Input.GetKey(KeyCode.D))         {             this.transform.Rotate(0, Rotatespeed * Time.deltaTime, 0, Space.Self);//A逆时针旋转         }     } }  3、将MoveControl脚本添加进Player
4、给Player添加刚体组件
5、靠前人称摄像头设置
(1)让摄像头的position与Player的position一致
2、下载音乐,并将其加载进Unity中
- 新建一个musics的文件夹
 - 将mp3文件拖入musics文件夹
加载成功! 
3、添加游戏音效
- 新建一个Empty对象,并改名为游戏音效
 - 点击Add Component 添加 Audio Source组件
 
七、开始运行游戏与游戏导出
1、运行测试
- 玩家速度修改
 
修改Speed:影响玩家的速度
 修改Rotatespeed:影响玩家的旋转速度
2、游戏导出
File —> Build Settings
 打开导出设置
八、结语
如果你能跟着做到这里,那么恭喜!Unity成功入门了,下一节将开始更深入的各项功能与组件的使用,以及实现各类基础功能的脚本书写练习,模型导入与导出,最终实现一个使用Unity开发的星战游戏Demo!
 下期预告,星战前夜!

QQ客服