Unity 游戏场景控制Scene Manager
2014-01-27 12:42
169 查看
引言
游戏基本架构大致分为介绍界面(introduction),主菜单界面(Menu),游戏界面(Game),设置界面(Setting),排行榜(high score)。在很多开发引擎中都结合以上架构存在类似的概念。安卓的活动(Activity),视图(View)等。在Unity中更是有场景(Scene)这一个概念。
Scene就是一组相关联的游戏对象的一个集合,通常每个集合就是一个场景,但是也有可能只是一个场景的一部分!
那么怎么管理游戏场景及游戏关卡是很重要的一个问题。其中涉及到场景跳转,场景加载等。如下介绍一款插件:Scene Manager。
提供官网地址。其中有DEMO,Tutorials,documentation,support。可供学习。
也可在unity 资源商店导入。
上该篇讲述后的工程视频:
http://v.youku.com/v_show/id_XNjY2NzA5NDY0.html
Unity实现过程
介绍:一个菜单界面,点击进入游戏关卡一,点击进入游戏关卡二,点击回到菜单界面。新建一个Unity工程,命名为SceneManagerTest.
保存场景为MyMainMenu.新建2个场景(游戏关卡一,二)为MyLevel1,MyLevel2.
导入插件包。其中插件包中的实例就不说了,直接进入简单的应用开发吧。
在工程视图中新建"Resources"、"MyScenes"、"MyScripts"、三个文件夹。
复制SceneManagerDemo中的SMGameEnvironment.cs脚本到MyScripts文件夹中,复制Transitions文件夹到新建的Resources下,删除SceneManagerDemo.
在Resources文件夹下新建"MyConfig"文件夹,选中Assets点击工程视图中的Create,点击选择“SceneConfiguration”,在MyConfig文件夹中可以看到"SMSceneConfiguration.cs".
选中“SMSceneConfiguration”,在检视面板中可以看到之前我们新建的三个场景,点击Activate按钮
在见识面板中的"AvaliableScenes"中选择场景,点击对应的功能按钮(Level、Screen等)如下图示:
在MyMainMenu场景中新建一个空物体,命名为MyMenuController,新建ShowGame.cs脚本如下:并将脚本挂在MyMenuController物体上。
using UnityEngine; using System.Collections; //我自定义啦。。 public class ShowGame : MonoBehaviour { private SMSceneManager mSMSceneManager; private SMILevelProgress mLevelProgress; // Use this for initialization void Start () { mSMSceneManager = SMGameEnvironment.Instance.SceneManager; mLevelProgress = mSMSceneManager.UnmodifiableLevelProgress; } // Update is called once per frame void Update () { } void OnGUI(){ //if(!mLevelProgress.HasPlayed){ if(GUI.Button(new Rect(200,200,200,200),"MenuScene")){ mSMSceneManager.LoadFirstLevel(); } //} } }
分别在MyLevel1,MyLevel2场景中新建空物体为MyLevel1Controller,MyLevel2Controller,新建ShowNextLevel.cs脚本一并挂于空物体MyLevel1Controller,MyLevel2Controller上、
using UnityEngine; using System.Collections; //我自定义啦。。 public class ShowNextLevel : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { } void OnGUI(){ if(GUI.Button(new Rect(200,200,200,200),this.name)){ SMGameEnvironment.Instance.SceneManager.LoadNextLevel(); }} }
注意:记得将SMGameEnvironment.cs中的23行中的DemoConfig改为MyConfig
其中SMGameEnvironment.cs脚本如下:
using UnityEngine; using System.Collections; public class SMGameEnvironment { private static SMGameEnvironment instance; private SMSceneManager sceneManager; public static SMGameEnvironment Instance { get { if (instance == null) { instance = new SMGameEnvironment(); } return instance; } } public SMSceneManager SceneManager { get { return sceneManager; } } public SMGameEnvironment() { sceneManager = new SMSceneManager(SMSceneConfigurationLoader.LoadActiveConfiguration("MyConfig")); sceneManager.LevelProgress = new SMLevelProgress(sceneManager.ConfigurationName); // Comment this in to enable the blinds transition type // sceneManager.TransitionPrefab = "Transitions/MyTransition"; } }
相关文章推荐
- unity 3d 射击游戏 (一)场景和飞机
- Unity2D游戏开发基础教程1.2 项目、资源和场景
- Unity 2D游戏开发教程之为游戏场景添加多个地面
- Unity 3D酷跑类游戏场景循环
- Unity游戏开发使用Assetbundle加载场景的原理
- Unity制作游戏中的场景
- 【Unity】按住鼠标右键,移动场景内镜头(适用于塔防等游戏视角)
- Unity制作游戏中技能使用后转CD的场景
- 【Unity】4.0 第4章 创建基本的游戏场景
- Unity 2D游戏开发教程之为游戏场景添加多个地面
- unity深入研究--之异步加载游戏场景与异步加载游戏资源进度条
- Unity游戏开发使用Assetbundle加载场景实战
- Unity游戏开发使用Assetbundle加载场景的实战
- Unity制作游戏中的场景
- 面向组件编程之Unity 4.怎样得到游戏场景中的对象 例如:layer/tag&&SetActive隐藏游戏物体
- 【Unity入门】场景、游戏物体和组件的概念
- Unity游戏开发使用Assetbundle加载场景实战
- unity项目优化----游戏项目场景优化思路
- Unity 3D:在现有的Android游戏场景中显示AdMob的横幅
- Unity 切换游戏场景时屏幕淡入淡出效果 第二版