为游戏开发设计人员通过在编辑器中制作一个场景,来表现游戏中的一部分世界内容。
原文参考链接:https://docs.cocos.com/creator/3.3/manual/zh/concepts/scene/

零、场景结构

Cocos Creator 通过节点树和节点组件系统实现了自由的场景结构。
Node :负责管理节点树的父子关系以及空间矩阵变换 Transform,这样可以轻松地在场景中管理和摆放所有的实体节点。
组件系统:赋予了节点各种各样的高级功能,比如:

  1. - 模型渲染(MeshRenderer 组件)
  2. - 动画(Animation 组件)
  3. - 光源(Light 组件)
  4. - 地形(Terrain 组件)等。

其中 3D 场景中的必要元素是 Camera 组件,Camera 组件代表的是游戏中的玩家视角,没有 Camera 就什么也看不见。因而在创建场景时,Creator 会默认创建一个挂载了 Camera 组件的节点。

一、场景资源

1.1 创建场景

创建场景的几种方式:

  1. 在资源管理器中右键文件夹或者左上角的+号按钮
  2. 在顶部菜单栏中选择 文件 -> 新建场景

    1.1.1 右键文件夹或者左上角的+号按钮

    资源管理器 中右键点击想要放置场景文件的文件夹,然后选择 创建 -> Scene 即可。为了使项目具备良好的文件夹目录结构,强烈建议使用该方法创建场景image.png
    资源管理器 中点击左上角的 + 创建按钮,然后选择 Scene 即可。image.png

    1.1.2 在顶部菜单栏中选择 文件 -> 新建场景

    在顶部菜单栏中选择 文件 -> 新建场景,即可在 场景编辑器 中直接创建一个新场景。

    资源管理器 中不会出现新场景文件,需要在保存场景时弹出的 保存场景 窗口中手动保存场景文件,保存完成后才会在 资源管理器 的根目录下出现 scene.scene 场景文件。

image.png

1.2 保存场景

方法一:使用快捷键 Ctrl + S(Windows)或 Command + S(MacOS)来快速保存场景。
方法二:在顶部菜单栏中选择 文件 -> 保存场景

1.3 切换场景

资源管理器 中,通过双击场景文件打开场景。
如果需要在游戏过程中切换场景,可通过 director.loadScene 等 API 来实现游戏中动态场景加载及切换。

1.4 场景属性

双击打开场景文件后,可以看到 层级管理器 中的 scene 是场景节点树的根节点。选中 scene 节点,在 属性检查器 中可设置场景是否自动释放,以及整个场景相关的属性,包括环境光设置,阴影设置、全局雾和天空盒设置。
image.png
场景资源的自动释放,详情请参考下文 场景资源自动释放策略 部分的内容。
各类属性的详细说明请参考:

  • 环境光
  • 阴影
  • 全局雾
  • 天空盒
  • 原生场景剔除

    1.5 场景资源自动释放策略(AutoReleaseAssets)

    如果项目中的场景很多,随着新场景的切换,内存占用就会不断上升。除了使用 assetManager.releaseAsset 等 API 来精确释放不使用的资源,我们还可以使用场景的自动释放功能。
    双击打开场景文件后,在 层级管理器 选中 scene 节点,即可在 属性检查器 中设置场景是否自动释放:
    image.png
    从当前场景切换到下一个场景时,如果当前场景不自动释放资源,则该场景中直接或间接引用到的所有资源(脚本动态加载的不算),默认 都不主动释放。反之如果启用了自动释放,则这些引用到的资源 默认 都会自动释放。

    二、资源系统

    三、脚本指南及事件机制

    3.5 事件系统

    3.5.1 发射和监听事件

    3.5.2 全局系统事件(输入事件系统)

    3.5.3 节点事件系统