Editor
UICreateNewUIWizard.cs
//----------------------------------------------
// NGUI: Next-Gen UI kit
// Copyright © 2011-2013 Tasharen Entertainment
//----------------------------------------------
using UnityEditor;
using UnityEngine;
using System.Collections.Generic;
///
/// UI Creation Wizard
///
public clast UICreateNewUIWizard : EditorWindow
{
public enum CameraType
{
None,
Simple2D,
Advanced3D,
}
static public CameraType camType = CameraType.Simple2D;
///
/// Refresh the window on selection.
///
void OnSelectionChange () { Repaint(); }
///
/// Draw the custom wizard.
///
void OnGUI ()
{
EditorGUIUtility.LookLikeControls(80f);
GUILayout.Label("Create a new UI with the following parameters:");
NGUIEditorTools.DrawSeparator();
GUILayout.BeginHorizontal();
NGUISettings.layer = EditorGUILayout.LayerField("Layer", NGUISettings.layer, GUILayout.Width(200f));
GUILayout.Space(20f);
GUILayout.Label("This is the layer your UI will reside on");
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
camType = (CameraType)EditorGUILayout.EnumPopup("Camera", camType, GUILayout.Width(200f));
GUILayout.Space(20f);
GUILayout.Label("Should this UI have a camera?");
GUILayout.EndHorizontal();
NGUIEditorTools.DrawSeparator();
GUILayout.BeginHorizontal();
EditorGUILayout.PrefixLabel("When ready,");
bool create = GUILayout.Button("Create Your UI", GUILayout.Width(120f));
GUILayout.EndHorizontal();
if (create) CreateNewUI();
}
///
/// Create a brand-new UI hierarchy.
///
static public GameObject CreateNewUI ()
{
NGUIEditorTools.RegisterUndo("Create New UI");
// Root for the UI
GameObject root = null;
if (camType == CameraType.Simple2D)
{
root = new GameObject("UI Root (2D)");
root.AddComponent().scalingStyle = UIRoot.Scaling.PixelPerfect;
}
else
{
root = new GameObject((camType == CameraType.Advanced3D) ? "UI Root (3D)" : "UI Root");
root.transform.localScale = new Vector3(0.0025f, 0.0025f, 0.0025f);
root.AddComponent().scalingStyle = UIRoot.Scaling.FixedSize;
}
// astign the layer to be used by everything
root.layer = NGUISettings.layer;
// Figure out the depth of the highest camera
if (camType == CameraType.None)
{
// No camera requested -- simply add a panel
UIPanel panel = NGUITools.AddChild(root.gameObject);
Selection.activeGameObject = panel.gameObject;
}
else
{
int mask = 1