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:结算界面
  • Level01Level02:不同关卡
  • 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. 创建 MenuSceneGameScene 两个场景。
  2. 把它们加入 Build Settings
  3. 在按钮脚本里调用 SceneManager.LoadScene("GameScene")
  4. 再学习 DontDestroyOnLoad
  5. 最后再学 Additive 叠加场景。

Scene 和 Project 的区别

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

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

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

简单记:

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

参考链接

场景系统

文章评价

读完这篇,留下你的看法

暂无审核通过的评价。

登录账号后才能评价。

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