您的位置:首页 > 移动开发 > Unity3D

Unity的使用(二):基本操作和组件介绍

2020-06-03 06:16 274 查看

当我们创建好一个项目后,就会进入到一个默认的场景中。这是我们的第一步,任何一个伟大的作品,都是这么一步步走来的。那么,面对Unity引擎给我们的这个简单场景,我们又能做些什么呢?

一. Unity的界面介绍

这里以Unity2017为例,其它版本的Unity可能会多一些功能,但是总体应该差不了多少。

上图是总结的一个简单的Unity开发场景,各个面板布局是我自定义的一种比较喜欢的方式(布局是可以在右上角的Layout处设置的,也可以保存自己的布局方式)。可以看到一个面板上可以有不止一个视图,比如下方Console视图和Game视图放在同一个面板上。通过点击面板右上方的箭头或在视图标签上点击右键,可以添加新的视图(甚至可以重复添加)。

有几个比较复杂或位置不够的内容,就拿到下面说明了。

注解1:左侧可以在"Pivot"和"Center"间进行切换:当为Pivot时,表示该游戏物体在创建时指定的中心点,如果选中的是多个物体,那该坐标表示的是第一个选中物体的Pivot坐标;当为Center时,指的是Unity根据模型的mesh信息计算得到的中心位置,当选中多个物体时,其坐标是所有模型共同参与计算出来的坐标。右侧则是在"Global"和"Local"间进行切换:当为
注解2:是否关闭声音。
注解3:通过该Layers按钮,可以隐藏特定层级或锁定特定层级(被锁定层级中的游戏物体在Scene视图中无法用鼠标选中)。

内容补充:

  1. Scene视图中对右上角的坐标系的快捷操作:左键或中键点击坐标轴快速转换到某一方向视角,或者右键转换(开发中,常用back视角);左击中间方块快速在透视投影和正交投影间切换,中键点击方块则是切换到透视投影的俯视45°视角;
  2. Hierarchy视图展现当前场景中有什么游戏物体,当该场景没有保存的话,该场景名为Untitled,可以Ctrl+S保存场景到Assets文件夹下;
  3. Project视图可以在面板的右上角设定显示为双列布局或单列布局(上图为双列),当为单列时直接展示Assets文件夹下的内容;Project视图上方的搜索不仅可以搜索Assets中的资源,也可以搜索资源商店中的资源;

二. 快捷操作和按键

其中部分快捷键可以通过Edit -> Preferences -> Keys里面进行设置。

  1. 变换工具(位于项目场景左上角)
    Q -- Hand (手形) 平移整个Scene视图(可用鼠标中键代替)
    W -- Translate(移动) 移动选定的游戏对象

    E -- Rotate(旋转)按任意角度旋转游戏对象
    R -- Scale(缩放)缩放选中的游戏对象

    T -- 横切面工具 可以沿着横截面缩放,绕着横截面中心点旋转(常用于2D开发中)

    Z -- Center 在Pivot和Center模式间切换
    X -- Local 在Local和Global模式间切换
  2. 播放控件(位于项目场景中间)
    Ctrl + P -- 播放按钮
    Ctrl + shift + P -- 暂停按钮
    Ctrl + Alt + P -- 逐帧播放
  3. 菜单栏快捷键
    File菜单快捷键:
    Ctrl + N -- New Scene 创建新场景
    Ctrl + O -- Open Scene 打开场景

    Ctrl + S -- Sava Scene 保存场景
    Ctrl + Shift + S -- Save Scene as 场景另存为

    Ctrl + Shift + B -- Build Settings 发布设置
    Ctrl + B -- Build & Run 发布并运行

    Edit菜单快捷键:
    Ctrl + Z -- Undo Selection Change 撤销上一步操作
    Ctrl + X -- Cut 剪切

    Ctrl + Y -- Redo 反撤销
    Ctrl + C -- Copy 复制

    Ctrl + V -- Paste 粘贴
    Ctrl + D -- Duplicate 复制并粘贴

    Shift + Del -- Delete 删除(不需要再点确认)
    Ctrl + A -- Select All 选择全部

    Ctrl + F -- Find 搜索,按名称查找物体
    Shift + F -- Lock View to Selected 锁定到搜索到的物体

    F -- Frame Selected 居中并最大化选中游戏物体(快速双击Hierarchy视图中游戏物体有相同效果)

    Selection大类,Ctrl + Alt + 数字键:保存在Hierarchy视图中选中了哪些游戏物体,Ctrl + Shift + 数字:读取之前的选中配置

    Assets菜单栏快捷键:
    Ctrl + R -- Refresh 刷新场景

    GameObject菜单栏快捷键:
    Ctrl+ Shift + N -- Create Empty 创建一个空的游戏对象
    Alt + Shift + N -- Create Empty Child 创建一个空的子物体

    Ctrl + Alt + F -- Move to New 移动选中对象到视图中心点
    Ctrl + Shift + F -- Align With View 将选中物体移动到当前视角处

    Ctrl + - --Set as last sibling 将选中物体作为最后一个子物体
    Ctrl + = -- Set as first sibling 将选中物体作为第一个子物体

    Alt + Shift + A -- Toggle Active State 激活或激死选定的游戏物体

    Component菜单栏快捷键:
    Ctrl + Shift + A -- Add 添加组件

    Window菜单栏快捷键:
    Ctrl + Tab -- Next Window 下个窗口
    Ctrl + Shift + Tab -- Previous Window 上个窗口(用于多个视图重叠时)

    Ctrl + 1 -- Scene 打开Scene视图
    Ctrl + 2 -- Game 打开Game视图

    Ctrl + 3 -- Inspector 打开Inspector视图
    Ctrl + 4 -- Hierarchy 打开Hierarchy视图

    Ctrl + 5 -- Project 打开Project视图
    Ctrl + 6 -- Animation 打开Animation视图

    Ctrl + 7 -- Profiler 打开Profiler视图
    Ctrl + 8 -- Audio Mixer 打开Audio Mixer视图

    Ctrl + 9 -- Asset Store 打开Unity资源商店
    Ctrl + 0 -- Asset Serve 打开资源服务器

    Ctrl + Shift + C -- Console 打开控制台
  4. Scene视图视角移动
    按住鼠标中键 + 拖拽 -- 平移整个视图
    滑动鼠标中键 -- 快速缩放视图

    Alt + 鼠标左键拖拽 -- 以当前视图中心点为基准点进行旋转
    右键拖拽 -- 以自身为基准点旋转

    Alt + 鼠标右键拖拽 -- 进行平滑缩放视图
    鼠标右键 + W/A/S/D/Q/E -- 向前/后/左/右/下/上移动浏览视图

    鼠标右键 + W/A/S/D/Q/E + Shift -- 向前/后/左/右/下/上快速移动浏览视图
  5. 补充快捷键
    F2 -- 重命名
    Alt + 鼠标左键点击Hierarchy视图中游戏物体子物体展开箭头 -- 展开或收起对象所有子物体

    Shift + 空格 -- 对当前窗口进行最大化或恢复

    选中游戏物体 + V -- 在Scene视图中定位到距离鼠标最近的该物体身上的顶点,可选中拖动

    Ctrl + 拖拽游戏物体 在Scene视图中以一定的增量来改变游戏物体的属性(增量在Edit -> Snap Settings中设置)

三. 组件,游戏物体和场景

创建项目后进入Untitled场景中,Unity给我们提供了两个默认游戏物体:Main Camera和Directional Light。我们在进行开发时,操纵的对象也主要是游戏物体。

选中一个游戏物体,我们可以在Inspector面板上看到它会挂有一些组件,如:Transform, Camera等。我们创建出来的游戏物体都是一样的,正是通过组件来实现不同游戏物体的独特功能。组件也可以像游戏物体一样,通过左上方的勾来启用或者关闭(通过组件脚本中的enabled属性来实现)1

所有游戏物体构成一个场景,使用Ctrl + S保存场景到Assets文件夹中(场景也是资源,必须放在Assets文件夹内)。使用Notepad++打开刚才保存的Unity场景文件2,看下图:

场景文件中预制体记录的是相对原预制体的改变之处3,这样只需要引用原预制体meta文件,并将场景文件中记录下的修改应用到meta文件中,就可以再现在该场景中预制体的样子了(因此预制体节约内存又方便)。

我们再点开一个上图场景中的一个游戏物体,同时开启Inspector的Debug模式:

可以看到:

其中,!u! + 数字ID表示不同的组件类型,具体ID对应关系参阅官方文档,其中114对应的是MonoBehaviour。而游戏物体上的InstanceID是Unity中一个实例的ID,每一个Unity实例都有一个,在运行时可以使用UnityEngine.Object的GetInstanceID获取,但是,每一次运行相当于生成新的实例,这个值是可变的。

因此,场景信息的保存原理因此也显而易见了:场景文件记录了每个场景中的游戏物体,每个游戏物体记录该游戏物体身上组件的FileID,在需要引用时根据FileID查找文件中的组件;而组件内记录在该场景中的初始化数据(即场景中组件记录的数据会覆盖脚本中给公有变量定义的数据)。

  1. 不是所有组件左上方都有勾,像基础组件Transform, Mesh Filter就没有。是因为这类组件它只是起到一个存储信息的作用,其内部并没有用到生命周期函数。 ↩︎

  2. Unity中所有序列化文件都是使用YAML语言来编写的,所以这里要将Notepad++的语言设置为YAML。 ↩︎

  3. 我们对预制体的更改会应用到该预制体的实例身上,前提是实例并没有在相应的地方进行修改。若在场景中的实例对自身进行了修改,其修改的属性在Inspector视图会变粗,也不再受预制体影响,因为场景文件记录下了该修改,并会将该修改应用到场景中的实例上。 ↩︎

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: