GameManager

Code snippet

using UnityEngine;
using System.Collections;
using System.Collections.Generic; //Allows us to use Lists.
public class GameManager : MonoBehaviour
{
public static GameManager instance = null; //Static instance of GameManager which allows it to be accessed by any other script.
private BoardManager boardScript; //Store a reference to our BoardManager which will set up the level.
private int level = 3; //Current level number, expressed in game as "Day 1".
//Awake is always called before any Start functions
void Awake()
{
//Check if instance already exists
if (instance == null)
//if not, set instance to this
instance = this;
//If instance already exists and it's not this:
else if (instance != this)
//Then destroy this. This enforces our singleton pattern, meaning there can only ever be one instance of a GameManager.
Destroy(gameObject);
//Sets this to not be destroyed when reloading scene
DontDestroyOnLoad(gameObject);
//Get a component reference to the attached BoardManager script
boardScript = GetComponent<BoardManager>();
//Call the InitGame function to initialize the first level
InitGame();
}
//Initializes the game for each level.
void InitGame()
{
//Call the SetupScene function of the BoardManager script, pass it current level number.
boardScript.SetupScene(level);
}
//Update is called every frame.
void Update()
{
}

Loader

Code snippet

using UnityEngine;
using System.Collections;
public class Loader : MonoBehaviour
{
public GameObject gameManager; //GameManager prefab to instantiate.
public GameObject soundManager; //SoundManager prefab to instantiate.
void Awake ()
{
//Check if a GameManager has already been assigned to static variable GameManager.instance or if it's still null
if (GameManager.instance == null)
//Instantiate gameManager prefab
Instantiate(gameManager);
//Check if a SoundManager has already been assigned to static variable GameManager.instance or if it's still null
if (SoundManager.instance == null)
//Instantiate SoundManager prefab
Instantiate(soundManager);
}
}