public void Init(List <LevelSelectButtonData> buttonData)
    {
        ClearExistingButtons();

        m_levelButtons = new LevelButton[buttonData.Count];

        int number = 1;

        foreach (LevelSelectButtonData lbd in buttonData)
        {
            GameObject  button      = Instantiate(m_buttonPrefab, transform);
            LevelButton levelButton = button.GetComponent <LevelButton>();
            m_levelButtons[number - 1] = levelButton;
            levelButton.Init(number++, lbd.m_levelNum, lbd.m_name, lbd.m_callback, lbd.m_isButtonActive);
            if (!lbd.m_isLevel)
            {
                // this is a button for a question - show it as either completed or not
                if (lbd.m_completionScore > 0)
                {
                    levelButton.HideCompletionCount(false);
                    levelButton.SetCompletedCount(1, 1);
                }
                else
                {
                    levelButton.HideCompletionCount(true);
                }
            }
            else
            {
                // this is a button for a quiz. Show the number of questions completed.
                levelButton.SetCompletedCount(lbd.m_completionScore, lbd.m_maxCompletion);
                if (lbd.m_completionScore == 0 && lbd.m_isButtonActive)
                {
                    // we've only just unlocked it. Flash it.
                    UnityStandardAssets._2D.Visibility vis = button.GetComponentInChildren <UnityStandardAssets._2D.Visibility>(true);
                    vis.Flash(5, 0.1f, 0.1f, true);
                }
            }
        }
    }