Skip to content

场景系统 ​

unity-scene-system

场景系统是什么 ​

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 Build

Single 和 Additive ​

最常用的是 Single,也就是切换场景:

c
SceneManager.LoadScene("GameScene");

它会加载新场景,并卸载旧场景。

Additive 是叠加场景:

c
SceneManager.LoadScene("UI", LoadSceneMode.Additive);

它不会卸载当前场景,而是把新场景叠上来。适合常驻 UI、分块地图、独立灯光场景。

保留对象 ​

切场景时,大部分对象会被销毁。想保留音乐、存档管理器、全局管理器,可以用:

c
DontDestroyOnLoad(gameObject);

新手学习顺序建议:

  1. 创建 MenuScene、GameScene 两个场景。
  2. 把它们加入 Build Settings。
  3. 在按钮脚本里调用 SceneManager.LoadScene("GameScene")。
  4. 再学习 DontDestroyOnLoad。
  5. 最后再学 Additive 叠加场景。

Scene 和 Project 的区别 ​

Project 面板是资源仓库,里面放:

  • 图片
  • 音频
  • 材质
  • 脚本
  • Prefab
  • 动画

Scene 是当前世界。资源被拖进场景后,才会变成场景里的对象。

简单记:

c
Project = 仓库
Scene = 当前运行的世界
Hierarchy = 当前 Scene 里的对象列表

参考链接 ​

场景系统

文章评价

读完这篇,留下你的看法

暂无审核通过的评价。

登录账号后才能评价。

本站访客数0总站访问量0本页访问量0