• 从零开始的unity3d入门教程(二)----基本功能讲解


    从零开始的unity3d入门教程(二)----基本功能讲解

    文章目录

    一、教学目标

    独立搭建出一个简单场景,并基于该场景开发一个简单的第一人称3D游戏

    在这里插入图片描述
    本次教学Demo已上传github:https://github.com/waitKey1/Unity-Game-Demo,有需要自取
    模型与音效unity包百度链接:
    链接:https://pan.baidu.com/s/1Sh77qhYaan_mZ6MpTVwPog?pwd=xvz8
    提取码:xvz8

    注:以上百度链接可以完全不用下载,下面有详细获取与场景模型搭建方法

    二、Unity界面的摆放与介绍

    1、Unity界面移动及复原

    这是界面中各个窗口的默认摆放位置,也是项目刚打开时候的样子
    在这里插入图片描述
    不过由于这样子摆放,平常工作的时候不是很方便。
    1、场景窗口有些太偏,工作不是很舒服
    2、游戏播放场景被折叠起来,不能实时看到游戏情况
    所以,我们需要对各个窗口进行一下移动,让其看起来更舒服

    (1)窗口移动方式

    在这里插入图片描述
    鼠标左键点击窗口名,拖拽移动窗口,左键提起放下窗口

    在这里插入图片描述
    随便拖拽就可以形成以上这样的效果

    (2)窗口初始化方法

    有时候窗口玩坏了怎么办?一键复原!
    Window–>Layouts–>Default
    在这里插入图片描述

    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介绍

    在这里插入图片描述

    • 基础对象
      1. Cube:立方体
      2. Sphere:球体
      3. Capsule:胶囊体
      4. Cylinder:圆柱体
      5. Plane:平面
      6. Quad:四边形
    • 文字与动画系统
      1. Text :文字
      2. legacy:动画系统
    • 布娃娃系统
      1. RagDoll:布娃娃系统
    • 基础地形、环境
      1. Tree:树
      2. Wind Zone:风

    3、3D Object创建练习

    最终目标图如下:
    在这里插入图片描述
    (1)创建Cube,Sphere,Capsule,Cylinder,Quad依次排列
    对象移动方式:
    在这里插入图片描述

    1. 鼠标左键点击选定目标对象后,拖动坐标轴也就是那三个箭头,物体将沿着拖动的坐标轴移动
    2. 鼠标左键点击选定目标对象后,拖动坐标系也就是那三个平面,物体将沿着拖动的坐标系移动

    (2)创建Plane放在中间
    (3)创建一个Text
    在这里插入图片描述
    (4)创建一颗树
    都摆放好即可完成创建与移动练习!

    4、Cube Object Transform属性修改练习

    在对Cube的Transform组件修改之前需求先练习一下如下技巧。

    • 选定物体练习
    • 删除物体练习
    • Scene窗口画面放大、移动、旋转角度和对象追踪的练习
    (1)选定Scene中的对象
    • 对象选定方法
      1. 在Scene窗口中左键点击并拖拽,最后松开,即可批量选定矩形框定的对象
        在这里插入图片描述
      2. 在Hierarchy窗口中左键选定Sphere然后再Shift+左键点击Tree,即可批量选定Sphere到Tree之间的全部对象
        在这里插入图片描述
      3. 单次选定以及取消某个对象选定方法:批量选定后,Ctrl+左键即可选定某个对象,若这个对象已被选定则取消选定。
    (2)删除Scene中的对象

    界面有些嘈杂,我们将其他不是Cube和初始的Camera和Light的对象删掉吧

    • 对象删除方法
      1. 在选定对象后,按一个在你键盘右上角附近的键:Delete。即可删除所有选定的对象
    (3)Scene窗口基本操作练习
    1. Scene窗口纵深前进后退的方法鼠标滚轮滚动 或 Alt+鼠标滚轮滚动,向前滚动窗口画面前进。向后滚动,窗口画面后退。

      注:直接滚动,窗口视图是向中心前进。Alt+鼠标滚动则可以选择窗口视图向哪个方向前进

    2. Scene窗口上下左右移动的方法鼠标滚轮摁住拖拽,鼠标前移,画面向上、鼠标左移,画面向左等等,其他方向同理

    3. Scene窗口以当前位置为旋转原点的角度旋转的方法鼠标右键摁住拖拽,鼠标前移,画面向上旋转、鼠标左移,画面向左旋转等等,其他方向同理

    4. Scene窗口以窗口中心位置为旋转原点的角度旋转的方法Alt+鼠标左键摁住拖拽,鼠标前移,画面向上旋转、鼠标左移,画面向左旋转等等,其他方向同理

    5. 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 导航器

    • 导航器位置
      在这里插入图片描述

    • 透视视图与正交视图

      1. Perspective 透视视图:近大远小
      2. Orthographic 正交视图 :物体的显示与距离无关。比如:一个立方体,离视野比较近的边与离视野比较远的边的长度相等。
    • Scene窗口中的视图是透视视图还是正交视图,可以在Gizmo 导航器中设置
      在这里插入图片描述

      • 注:Persp是透视视图,再点击一下,就会转换成Iso正交视图
    • 三视图
      y轴:Top
      z轴:Front
      x轴:Right
      在这里插入图片描述

      • 注1:在很多Unity开发中y轴默认是三维空间中的高度,z轴是默认是前进后退,是正面。x轴是侧面
      • 注2:点击Gizmo中的哪个轴就切换到哪个视图。

    2、场景布置常用操作与组件

    在正式开始布置场景前,还需要注意:如何复制物体、光照设置、主摄像头、如何利用切换视图搭建场景

    (1)复制物体

    在这里插入图片描述
    - 选定物体后 ctrl+d

    注:复制物体后,Scene窗口下的视图可能没有任何变化,这是因为二者重叠了。选定复制出来的物体,再移动一下就看到有两个了。

    (2)光照设置
    • 亮度与颜色修改
      在这里插入图片描述
      在布置的时候,可能会感觉灯光太亮了,导致物体之间的分辨度很低。
      • Directional Light 属性简要介绍
        在这里插入图片描述
        注:一般情况,Light组件的属性我们就只修改Intensity即可,也就是修改亮度。可以改到0.8,具体数值大家可以多尝试一下,找出最合适的。
        颜色则根据游戏当前的环境,进行调整,比如黄昏类的就可以设置偏黄一些。
    • 光照角度修改
      在这里插入图片描述

    注1:选定光源后,按E,然后视情况调整
    注2:光源的位置,与大小,对光照效果没有任何影响,只需要调整角度即可

    (3)主摄像头
    • 手动调整主摄像头位置以及角度
      在这里插入图片描述
      • 注:选定后调整transform组件里面的Position坐标和Rotation角度即可
    • 将摄像头位置与角度,改为Scene窗口视图
      在这里插入图片描述
      • 选定主摄像头后,Ctrl+Shift+F
      • Field of View 视场视情况调整成,Ctrl+Shitf+F之后Scene窗口视图与Game视图无大的差异为主
        在这里插入图片描述
        注:视场可以类比为,摄像头的焦距,越小,拍摄的图像越近。
    (4)利用切换视图与角点吸附搭建场景

    如何在只能看到二维的画面情况下,搭建出完美符合自己审美要求的三维场景?三视图!

    a、不断转换视角搭建场景

    在这里插入图片描述
    在这里插入图片描述

    • 以上视图就是,先将透视视图 转换 成正交视图,再点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文件夹内

    在这里插入图片描述
    迷宫预制体完成
    注:预制体相当于一个自定义的一个结构,可以进行Unity自带的立方体,椭圆,球一样的操作。以后发射子弹,自动生成敌人等都需要用到这种技巧。

    五、玩家创建

    游戏地图制备好了,第二步就是创建一个玩家Player。
    玩家角色 是游戏的灵魂之一,单独的场景无法与游玩的人进行交互。需要通过玩家这一身份与场景进行交互,这样更有代入感一些。

    1、玩家 Player!

    在这里插入图片描述

    我们就定义一个正方体为Player。当然也可以是其他的形状,或者人什么的。

    2、创建一个实现玩家移动控制功能的C#文件

    • 创建一个叫Scripts文件夹

    • 在Scripts文件夹内创建C# Script
      在这里插入图片描述
      文件命名为:MoveControl(移动控制)
      在这里插入图片描述
      注:文件名字与类名字必须一致,如果创建文件后,只修改文件名就会报错,需要两个都改

    • 编写程序
      从之前的学习可以看出,只要修改物体的Transform组件中的position属性即可实现,修改物体位置的效果。
      综上,编程目标:让按键与修改目标物体的position属性绑定,形成一个交互效果。
      在这里插入图片描述

      1. Start():该函数程序运行开始会运行一次
      2. 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逆时针旋转
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55

    3、将MoveControl脚本添加进Player

    在这里插入图片描述

    4、给Player添加刚体组件

    在这里插入图片描述
    在这里插入图片描述

    5、第一人称摄像头设置

    (1)让摄像头的position与Player的position一致

    在这里插入图片描述
    点击Player的Position,然后Ctrl+C复制
    然后再点击Main Camera的Position Ctrl+V粘贴
    完成!

    (2)调整下摄像头的角度与Field of View 视场

    在这里插入图片描述

    (3)令Main Camera成为Player的子对象

    在这里插入图片描述

    六、游戏音效添加

    1、免费音乐资源网站推荐

    https://www.aigei.com/music/class/romantic_3/
    在这里插入图片描述

    2、下载音乐,并将其加载进Unity中

    • 新建一个musics的文件夹
    • 将mp3文件拖入musics文件夹
      在这里插入图片描述
      加载成功!

    3、添加游戏音效

    • 新建一个Empty对象,并改名为游戏音效
    • 点击Add Component 添加 Audio Source组件
      在这里插入图片描述
      在这里插入图片描述

    七、开始运行游戏与游戏导出

    1、运行测试

    在这里插入图片描述

    • 玩家速度修改

    在这里插入图片描述

    修改Speed:影响玩家的速度
    修改Rotatespeed:影响玩家的旋转速度

    2、游戏导出

    File —> Build Settings
    打开导出设置
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    八、结语

    如果你能跟着做到这里,那么恭喜!Unity成功入门了,下一节将开始更深入的各项功能与组件的使用,以及实现各类基础功能的脚本书写练习,模型导入与导出,最终实现一个使用Unity开发的星战游戏Demo!
    下期预告,星战前夜!
    请添加图片描述

  • 相关阅读:
    护眼灯国A与国AA级差别是什么?推荐双十一值得入手的国AA的护眼灯
    Json 转sqlserver创建表脚本 JSONtoSQLGenerator
    git的基本使用1
    高精度绝对角度传感器应用高速度角度监测
    现代企业管理笔记——企业概论
    343. 整数拆分
    Git 工作流程、工作区、暂存区和版本库
    Vue.js设计与实现
    【OpenCV 例程200篇】206. Photoshop 色阶调整算法
    Echarts 实现两两柱图重叠(背景和实际值柱图)
  • 原文地址:https://blog.csdn.net/qq_51116518/article/details/127328803