六游戏管理器
Hierarchy窗口下创建空对象,修改名称为GameManager。如图:
6.1创建脚本
切换Project/Asserts/Scripts窗口下,创建脚本文件BoardManager.cs(本文以C#为开发语言)
首先选择Scripts文件夹,右侧窗口为文件夹内容窗口,默认为空白。鼠标右键Create/C# Script即可。如图:
选择BoardManager和GameManager脚本都附加给GameManager对象。拖拽2个脚本,放置在Hierarchy/GameManager对象上释放即可。选择GameManager对象。Inspector窗口显示属性信息如图:
给BoardManager的属性赋值首先从Prefabs中选择所有FloorX精灵如图:
拖拽到Inspector/BoardManager/Floor Tiles属性上释放即可。如图:
按照此方法赋值Food Tiles / Exit / Wall Tiles / Enemy Tiles / Outer Wall Tiles属性值。如图:
点击“ ”查看效果如图:
可以看出来摄像机位置不正确,对摄像机进行调整解决问题。修改
Transform.Position.x=3.5
Transform.Position.y=3.5
Backgroud = Black;
6.2编辑脚本
编辑GameManager.cs代码如下:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
public class GameManager : MonoBehaviour
{
//关卡管理器脚本
public BoardManager boardScript;
//初始关卡数
private int level =3;
void Awake ()
{
//初始化关卡脚本
boardScript = GetComponent<BoardManager>();
//初始化游戏
InitGame();
}
//初始化游戏
void InitGame()
{
boardScript.SetupScene(level);
}
}
修改GameManager代码,采用单例模式,方式对GameManager的修改。保存在整个项目中唯一。代码如下:
using System.Collections.Generic;
using UnityEngine.UI;
public class GameManager : MonoBehaviour
{
public static GameManager instance = null;
//关卡管理器脚本
public BoardManager boardScript;
//初始关卡数
private int level =3;
void Awake ()
{
if (instance == null)
instance = this;
else
Destroy(instance);
DontDestroyOnLoad(gameObject);
//初始化关卡脚本
boardScript = GetComponent<BoardManager>();
//初始化游戏
InitGame();
}
//初始化游戏
void InitGame()
{
boardScript.SetupScene(level);
}
}
保存Hierarchy/GameManager对象为prefab.
6.3 加载脚本
创建Loader.cs脚本代码如下:
using UnityEngine;
using System.Collections;
public class Loader : MonoBehaviour {
public GameObject gameManager;
void Awake ()
{
if (GameManager.instance == null)
Instantiate(gameManager);
}
}
把Loader.cs作为组件附加给Main Camera即可。从Hierarchy中删除GameManager对象。
选择Hierarchy/Main Camera对象,Inspector窗口中的Loader/Game Manager赋值为Prefabs/GameManager预制体即可。如图: