为游戏开发设计人员通过在编辑器中制作一个场景,来表现游戏中的一部分世界内容。
原文参考链接:https://docs.cocos.com/creator/3.3/manual/zh/concepts/scene/
零、场景结构
Cocos Creator 通过节点树和节点组件系统实现了自由的场景结构。
Node :负责管理节点树的父子关系以及空间矩阵变换 Transform,这样可以轻松地在场景中管理和摆放所有的实体节点。
组件系统:赋予了节点各种各样的高级功能,比如:
- 模型渲染(MeshRenderer 组件)- 动画(Animation 组件)- 光源(Light 组件)- 地形(Terrain 组件)等。
其中 3D 场景中的必要元素是 Camera 组件,Camera 组件代表的是游戏中的玩家视角,没有 Camera 就什么也看不见。因而在创建场景时,Creator 会默认创建一个挂载了 Camera 组件的节点。
一、场景资源
1.1 创建场景
创建场景的几种方式:
- 在资源管理器中右键文件夹或者左上角的+号按钮
- 在顶部菜单栏中选择 文件 -> 新建场景
1.1.1 右键文件夹或者左上角的+号按钮
在 资源管理器 中右键点击想要放置场景文件的文件夹,然后选择 创建 -> Scene 即可。为了使项目具备良好的文件夹目录结构,强烈建议使用该方法创建场景。
在 资源管理器 中点击左上角的 + 创建按钮,然后选择 Scene 即可。
1.1.2 在顶部菜单栏中选择 文件 -> 新建场景
在顶部菜单栏中选择 文件 -> 新建场景,即可在 场景编辑器 中直接创建一个新场景。但 资源管理器 中不会出现新场景文件,需要在保存场景时弹出的 保存场景 窗口中手动保存场景文件,保存完成后才会在 资源管理器 的根目录下出现 scene.scene 场景文件。
1.2 保存场景
方法一:使用快捷键 Ctrl + S(Windows)或 Command + S(MacOS)来快速保存场景。
方法二:在顶部菜单栏中选择 文件 -> 保存场景。
1.3 切换场景
在 资源管理器 中,通过双击场景文件打开场景。
如果需要在游戏过程中切换场景,可通过 director.loadScene 等 API 来实现游戏中动态场景加载及切换。
1.4 场景属性
双击打开场景文件后,可以看到 层级管理器 中的 scene 是场景节点树的根节点。选中 scene 节点,在 属性检查器 中可设置场景是否自动释放,以及整个场景相关的属性,包括环境光设置,阴影设置、全局雾和天空盒设置。
场景资源的自动释放,详情请参考下文 场景资源自动释放策略 部分的内容。
各类属性的详细说明请参考:
- 环境光
- 阴影
- 全局雾
- 天空盒
- 原生场景剔除
1.5 场景资源自动释放策略(AutoReleaseAssets)
如果项目中的场景很多,随着新场景的切换,内存占用就会不断上升。除了使用 assetManager.releaseAsset 等 API 来精确释放不使用的资源,我们还可以使用场景的自动释放功能。
双击打开场景文件后,在 层级管理器 选中 scene 节点,即可在 属性检查器 中设置场景是否自动释放:
从当前场景切换到下一个场景时,如果当前场景不自动释放资源,则该场景中直接或间接引用到的所有资源(脚本动态加载的不算),默认 都不主动释放。反之如果启用了自动释放,则这些引用到的资源 默认 都会自动释放。二、资源系统
三、脚本指南及事件机制
3.5 事件系统
3.5.1 发射和监听事件
3.5.2 全局系统事件(输入事件系统)
3.5.3 节点事件系统
