小白Unity入门(上)

来源:互联网 发布:for与to的用法区别知乎 编辑:程序博客网 时间:2024/06/01 12:52

本文为新手学习Unity的学习笔记,如有写的不对的,欢迎指出,谢谢。

Unity简介

Create games, connect with your audience, and achieve success

You can create any 2D or 3D game with Unity. You can make it with ease, you can make it highly-optimized and beautiful, and you can deploy it with a click to more platforms than you have fingers and toes. What’s more, you can use Unity’s integrated services to speed up your development process, optimize your game, connect with an audience, and achieve success.

  • 以上是官网的一段简介,作为英语渣渣的我就大概的翻译一下,也就只能大概翻译(哈哈);
  • 首先Unity能够让你轻松创建出2D或者3D游戏,但不仅限于做游戏(自己理解)。你可以高度优化和美化你的游戏,并且你可以通过部署它到更多的平台。此外,你还可以使用Unity的集成服务来加快你的开发过程,优化你的游戏,和你的用户互动,并实现成功;
  • 更多简介大家可以去谷歌一下。我在这里就不多说,毕竟是一枚小白。

Unity的基本使用

创建基本 3D 物体

此处省略安装步骤,这部分内容网上很多,可以自行查找。

  1. 在Unity界面的左侧的Hierachy 面板右键–>3D Object–>Cube(正方体)
  2. 常用的 5 中 3D 物体:
    • Cube(立方体)
    • Sphere (球体)
    • Capsule (胶囊体)
    • Cylinder (圆柱体)
    • Plane (平面)

Scene 面板基础操作

  1. 工具栏功能
    手型:平移场景的观察角度
    箭头:可以移动物体的位置(箭头:固定方向移动; 面:平行于该面移动)
    旋转:可以旋转物体
    缩放:可以缩放物体

  2. 鼠标功能
    鼠标左键:选中场景中的物体
    鼠标中键:按下–>平移场景的观察角度;滚动–>拉远拉近
    鼠标右键:旋转场景的观察角度

  3. 鼠标与键盘组合操作
    Alt + 鼠标左键:旋转观察角度
    Alt + 鼠标右键:拉远拉近

常用的快捷键

Ctrl + D:复制物体
F:快速聚焦某个物体

材质球与贴图

材质球:Material,材质:物体的质地,物体看起来是什么做的。
贴图:Texture,就是“普通的图片”,用于材质球的显示。

  • 创建与使用材质球
    • 创建
      ①鼠标选中需要编辑的材质球物体;
      ②点击“Albedo”前的圆点,在弹出的“贴图选择界面”选择需要的材质;
    • 2种使用方式
      ①将材质球拖拽到 Hierarchy 面板上相应的物体上;
      ②将材质球拖拽到 Scene 面板上相应的物体上。

父子关系和预制体

父子关系:就是通过移动父物体,子物体也跟着移动。
预制体:预先准备好的物体,可以重复使用和利用。

  • 预制体的创建
    • 在 Assets 中建立“Prefabs”文件夹,用于管理预制体。
    • 将创建的3D物体拖入该文件夹即可
  • 使用预制体(2种方式)
    • ①将预制体直接拖拽到 Hierarchy 面板;
    • ②将预制体直接拖拽到 Scene 面板;

摄像机和灯光

基本组件摄像机和灯光

  • 摄像机
    摄像机(Main Camera)摄像机就是我们眼睛,用于观察我们的游戏世界

  • 摄像机基本操作
    ①:在 Hierarchy 面板上选中摄像机,Scene 视图会出现预览窗口。
    ②:根据轴向移动摄像机的位置,旋转摄像机的角度。
    ③:GameObject–>Align With View(Ctrl + Shift + F)对其视图。
    让摄像机对齐到当前视图,使 Scene 与 Game 中的观看角度和位置一致。
    ④:创建摄像机:Hierarchy 面板右键–>Camera。

  • 灯光
    用于照亮我们的游戏场景;使场景中产生阴影,增加真实感和和立体感。

  • 3种常用灯光:

    • 方向光:Directional Light,用于模拟太阳光。
    • 点光源:Point Light,用于模电灯泡的效果。
    • 聚光灯:Spot Light,用于模拟聚光灯照射的效果。

组件与脚本

  • Transform 组件
    Transform:变换。所有的游戏物体都具备的一个组件,也是最最基础的一个
    组件,用于存储游戏物体的基本信息。
    Position:位置;
    Rotation:旋转;
    Scale:缩放;

  • 脚本
    Unity3D 5.x 后,只支持两种类型的脚本,C# 与 Javascript。
    国内开发主流的还是使用 C#语言

  • 脚本代码简介
    Start()方法:当游戏运行起来,就会马上执行,且只执行一次。
    Update()方法:循环调用,每帧调用一次。一秒钟大概执行 60 次。
    帧:我们的游戏画面是在不停的刷新的,没刷新一次,就是一帧。
    Start()和 Update()方法都是 Unity3D 内部的“事件方法”,不需要我们人工调用,系统会自动调用和管理这些“事件方法”。

  • 2种方式使用脚本

    1. 直接将脚本拖拽到 Hierarchy 面板上物体身上;
    2. 直接将脚本游戏物体的 Inspector 面板上;
      运行游戏,脚本就会执行。

鼠标键盘输入

  • 获取键盘输入
    Input.GetKey(); //按下某键后,持续返回 true
    Input.GetKeyDown(); //按下某键的一瞬间,返回 true
    Input.GetKeyUp(); //抬起某键的一瞬间,返回 true
    返回值:bool 类型
    参数:KeyCode 枚举(Enum)
    KeyCode:键码,保存了物理键盘按键“索引码”。

  • 获取鼠标输入
    Input.GetMouseButton(); //按下某键后,持续返回 true
    Input.GetMouseButtonDown(); //按下某键的一瞬间,返回 true
    Input.GetMouseButtonUp(); //抬起某键的一瞬间,返回 true
    返回值:bool 类型
    参数:鼠标按键索引值,0->左键 , 1->右键 , 2->中键。

使用变换组件移动游戏物体

  • 变换组件移动物体
    gameObject.GetComponent():获取相应组件的引用。
    查找当前游戏物体身上的某个组件,然后保存它的引用。
    Transform.Translate(Vector3, Space):移动物体的位置。
    游戏物体往某个方向移动;以自身坐标系或世界坐标系。

  • 相关参数
    Vector3[struct]:三维向量。
    向量,可以表示一个方向,也可以表示一个位置。
    Space[enum]:空间。
    Space.Self:表示物体自身的坐标系。
    Space.World:表示物体所在的世界坐标系。
    备注:脚本是游戏物体的一部分,一般控制谁的脚本就挂载在谁的身上。

物理组件之刚体

  • 变换组件运动特点
    使用 Transform.Translate()方法移动物体的位置,特点如下:
    ①移动的物体会“穿透”场景中其他的物体模型;
    ②移动的物体不会受重力影响(到达场景边缘外,不会下落)。

  • 刚体组件

    • 刚体简介
      刚体:Rigidbody,属于物理类组件。
      作用:添加了刚体组件的游戏物体,就有了重力,就会做自由落体运动。也就意
      味着可以像现实中的物体一样运动。

    • 给物体添加刚体组件
      选中游戏物体–>菜单 Component–>Physics–>Rigidbody

    • 使用刚体移动物体

      1. 相关方法
        Rigidbody.MovePosition(Vector3):使用刚体移动物体的位置。
        使用刚体移动物体,物体是根据世界坐标系的方向移动的。
        使用刚体移动物体,物体会触发物理相关的事件。
      2. 参数
        MovePosition中的 Vector3 要使用“当前位置”+ 方向 的方式。
        Transform.Position:属性 当前物体的位置。
      3. 特点
        使用刚体移动物体,特点如下:
        ①会于场景中的模型物体发生碰撞;
        ②会受重力影响(到达场景边缘外,会下落)。

物理组件之碰撞体

碰撞体简介
使用刚体移动的物体,与场景中其他的物体相碰撞:
其实是碰撞的目标物体的“碰撞体”组件,也就是 Collider。
另外和目标物体碰撞的,是我们移动的物体的自身的“碰撞体”组件。
碰撞体可以理解为我们的模型的“外骨骼”。
模型只要加了刚体,就必须要加碰撞体,否则没有意义。

  • 给物体添加碰撞体组件
    选中游戏物体–>菜单 Component–>Physics–>Xxxx Collider
    (我们在 Unity 中创建的基本模型,自身都带有碰撞体组件)

  • Box Collider

  • 简介
    盒子碰撞体,形状是立方体形,用于包裹类似“立方体”的模型,比如:盒子,箱子,门,房子等。
  • 组件属性
    Center[中心点]
    设置 Box Collider 的中心点。
    Size[大小]
    设置 Box Collider 的大小。

  • Sphere Collider

  • 简介
    球形碰撞体,形状是球形,用于包裹类似“球形”的模型。
  • 组件属性
    Radius[半径]
    设置 Sphere Collider 的大小。

  • Capsule Collider

  • 简介
    胶囊碰撞体,形状是胶囊状,用于包裹“胶囊形”的模型。
  • 组件属性
    Height[高度]
    设置 Capsule Collider 的高度。
    Direction[方向]
    设置 Capsule Collider 的高度方向(轴向)。

  • Mesh Collider

    1. 简介
      网格碰撞体,用于包裹复杂结构的模型。
    2. 组件属性
      Mesh[网格]
      根据指定的网格,生成碰撞体。

刚体常用方法介绍

  • AddForce()

    1. 作用
      给刚体添加一个力,让刚体按“世界坐标系”进行运动。

    2. 代码
      Rigidbody.AddForce(Vector3,ForceMode);
      Vector3:力的方向和大小;
      ForceMode:力的模式[enum 类型]。

    3. ForceMode 参数
      类型为枚举类型,以什么样的方式添加力给刚体。
      枚举值说明
      Acceleration:(加速度);
      Force:(力)这种模式通常用于设置真实的物理;
      Impulse:(冲击力)这种模式通常用于瞬间发生的力;
      VelocityChange:(速度的变化);

  • AddRelativeForce()

    1. 作用
      给刚体添加一个力,让刚体按“自身坐标系”进行运动。

    2. 代码
      Rigidbody.AddRelativeForce(Vector3,ForceMode);
      Vector3:力的方向和大小;
      ForceMode:力的模式[enum 类型]。

  • FixedUpdate()
    固定更新方法。
    所有和物理相关的操作,代码都要写在 FixedUpdate()方法体内。
    固定更新的时间间隔是 0.02 秒,1 秒执行 50 次。
    Edit–>Project Settings–>Time 面板中的Fixed Timestep参数设置。
    Update()方法是每帧执行一次。
    画面每渲染完一次,就是一帧,每帧的时间是不固定的。
    在 Update()方法中执行物理操作,会出现卡顿的情况。

刚体碰撞事件监测与处理

  • 何为碰撞事件?
    当一个用体的物体与一个物体时,就会触发碰撞事件。
    注:目标物体必须带有 Collider 组件。

  • 碰撞事件监测方法

    1. OnCollisionnter(Collision)
      当碰撞开始时调用,只会调用该方法一次
    2. OnCollisionxit(Collision)
      当碰撞结束时调用,只会调用该方法一次
    3. OnCollisionStay(Collision)
      当碰撞进行中时调用,会持续调用该方法

    4. Collision 参数
      作用:用于传递碰撞信息
      Collision.gameObject 属性,与当前物体碰撞的物体的引用。
      gameObject.name 属性,当前物体的名字。

刚体触发事件监测与处理

  • 触发事件简介
  • 触发器
    将碰撞体组件属性面板上的“Is Trigger”选项选中,当前的游戏物体的碰撞体就变成了触发器。
    移动的刚体物体会穿透碰撞体勾选了“Is Trigger”的物体。
  • 触发事件
    当一个用刚体控制的物体进入到另外一个物体的触发器范围内,就是触发事件。
    触发用途:不与目标物体发生直接的碰撞(接触),而是只要进入目标物体的“触发范围”就能执行某些特定操作。
  • 触发事件监测方法
    1. OnTriggerEnter(Collider)
      当进入触发范围时开始时调用,只会调用该方法一次。
    2. OnTriggerExit(Collider)
      当离开触发范围时开始调用,只会调用该方法一次。
    3. OnTriggerStay(Collider)
      在触发范围内,会持续调用该方法。
    4. Collider 参数
      碰撞体,一个类。作用:用于传递触发信息。
      Collider.gameObject 属性,进入触发范围内的目标物体的引用。
      gameObject.name 属性,当前物体的名字。

网格组件之网格过滤器和渲染器

网格过滤器组件
1.简介
网格过滤器:Mesh Filter。
该组件只有一个“Mesh”属性,用于设置当前游戏物体使用哪个模型进行展示。
Mesh:网格,也就是模型。

  • 网格渲染器组件
    1. 简介
      网格渲染器:Mesh Renderer。
      该组件用于“渲染”显示模型。如果没有该组件,模型就不会显示。
    2. 属性
      Cast Shadows [投射阴影]
      On:开启阴影显示
      Off:关闭阴影显示
      Receive Shadows [接收阴影]
      选中就是接收
      不选中就是不接收
      Materials [材质球]
      用于设置用哪个材质球渲染当前的模型(Mesh)。
      我们拖拽到游戏物体身上的材质球,其实就是赋予给了这个组件的这个属性上。

学点英语

It is never too late to be what you might have been.​
勇敢做自己,永远不嫌迟。

0 0