Appearance
场景系统
场景系统是什么
Unity 的 Scene 可以理解为一个“容器”。一个场景里保存当前要运行的一组 GameObject,比如:
c
MenuScene
├─ Main Camera
├─ Canvas
├─ StartButton
└─ SettingsPanel
GameScene
├─ Main Camera
├─ Player
├─ Enemies
├─ Ground
├─ GameUI
└─ SpawnPoint你可以把不同功能拆成不同场景:
MenuScene:主菜单GameScene:正式关卡ResultScene:结算界面Level01、Level02:不同关卡LoadingScene:加载界面
切换场景
脚本里切换场景要用:
c
using UnityEngine.SceneManagement;
SceneManager.LoadScene("GameScene");常见流程:
c
MenuScene
点击开始
↓
GameScene
玩家死亡/过关
↓
ResultScene注意:要能被加载的场景,必须先加入:
c
File > Build Settings > Scenes In BuildSingle 和 Additive
最常用的是 Single,也就是切换场景:
c
SceneManager.LoadScene("GameScene");它会加载新场景,并卸载旧场景。
Additive 是叠加场景:
c
SceneManager.LoadScene("UI", LoadSceneMode.Additive);它不会卸载当前场景,而是把新场景叠上来。适合常驻 UI、分块地图、独立灯光场景。
保留对象
切场景时,大部分对象会被销毁。想保留音乐、存档管理器、全局管理器,可以用:
c
DontDestroyOnLoad(gameObject);新手学习顺序建议:
- 创建
MenuScene、GameScene两个场景。 - 把它们加入
Build Settings。 - 在按钮脚本里调用
SceneManager.LoadScene("GameScene")。 - 再学习
DontDestroyOnLoad。 - 最后再学
Additive叠加场景。
Scene 和 Project 的区别
Project 面板是资源仓库,里面放:
- 图片
- 音频
- 材质
- 脚本
- Prefab
- 动画
Scene 是当前世界。资源被拖进场景后,才会变成场景里的对象。
简单记:
c
Project = 仓库
Scene = 当前运行的世界
Hierarchy = 当前 Scene 里的对象列表参考链接
场景系统