/// <summary>
 /// OnEnable.
 /// </summary>
 void OnEnable()
 {
     mScript                  = (MyUGUIToggleButton)target;
     mButton                  = serializedObject.FindProperty("mButton");
     mBackground              = serializedObject.FindProperty("mBackground");
     mToggle                  = serializedObject.FindProperty("mToggle");
     mTextTurnOn              = serializedObject.FindProperty("mTitleTurnOn");
     mTextTurnOff             = serializedObject.FindProperty("mTitleTurnOff");
     mIsShowTitle             = serializedObject.FindProperty("mIsShowTitle");
     mTurnOnPosition          = serializedObject.FindProperty("mTurnOnPosition");
     mTurnOnSpriteBackground  = serializedObject.FindProperty("mTurnOnSpriteBackground");
     mTurnOnSpriteToggle      = serializedObject.FindProperty("mTurnOnSpriteToggle");
     mTurnOffPosition         = serializedObject.FindProperty("mTurnOffPosition");
     mTurnOffSpriteBackground = serializedObject.FindProperty("mTurnOffSpriteBackground");
     mTurnOffSpriteToggle     = serializedObject.FindProperty("mTurnOffSpriteToggle");
     mOnValueChange           = serializedObject.FindProperty("OnValueChange");
 }
        /// <summary>
        /// Create a template.
        /// </summary>
        public static void CreateTemplate()
        {
            GameObject obj = new GameObject("ToggleButton");

            if (Selection.activeTransform != null)
            {
                obj.transform.parent = Selection.activeTransform;
            }

            RectTransform contentRectTransform = obj.AddComponent <RectTransform>();

            MyUtilities.Anchor(ref contentRectTransform, MyUtilities.EAnchorPreset.MiddleCenter, MyUtilities.EAnchorPivot.MiddleCenter, 200, 100, 0, 0);
            obj.AddComponent <Image>();

            GameObject background = new GameObject("Background");

            background.transform.SetParent(obj.transform, false);

            RectTransform backgroundRectTransform = background.AddComponent <RectTransform>();

            MyUtilities.Anchor(ref backgroundRectTransform, MyUtilities.EAnchorPreset.DualStretch, MyUtilities.EAnchorPivot.MiddleCenter, Vector2.zero, Vector2.zero);
            Image backgroundImage = background.AddComponent <Image>();

            backgroundImage.color         = Color.white;
            backgroundImage.raycastTarget = true;
            Button backgroundButton = background.AddComponent <Button>();

            GameObject toggle = new GameObject("Toggle");

            toggle.transform.SetParent(background.transform, false);

            RectTransform toggleRectTransform = toggle.AddComponent <RectTransform>();

            MyUtilities.Anchor(ref toggleRectTransform, MyUtilities.EAnchorPreset.MiddleCenter, MyUtilities.EAnchorPivot.MiddleCenter, 90, 90, 50, 0);
            Image toggleImage = toggle.AddComponent <Image>();

            toggleImage.color          = Color.black;
            toggleImage.type           = Image.Type.Simple;
            toggleImage.preserveAspect = true;
            toggleImage.raycastTarget  = true;

            GameObject titleTurnOn = new GameObject("TitleTurnOn");

            titleTurnOn.transform.SetParent(background.transform, false);

            RectTransform titleTurnOnRectTransform = titleTurnOn.AddComponent <RectTransform>();

            MyUtilities.Anchor(ref titleTurnOnRectTransform, MyUtilities.EAnchorPreset.MiddleCenter, MyUtilities.EAnchorPivot.MiddleCenter, 50, 50, -50, 0);
            Text titleTurnOnText = titleTurnOn.AddComponent <Text>();

            titleTurnOnText.text               = string.Empty;
            titleTurnOnText.fontSize           = 40;
            titleTurnOnText.supportRichText    = false;
            titleTurnOnText.alignment          = TextAnchor.MiddleCenter;
            titleTurnOnText.horizontalOverflow = HorizontalWrapMode.Overflow;
            titleTurnOnText.verticalOverflow   = VerticalWrapMode.Overflow;
            titleTurnOnText.color              = Color.black;
            titleTurnOnText.raycastTarget      = false;

            GameObject titleTurnOff = new GameObject("TitleTurnOff");

            titleTurnOff.transform.SetParent(background.transform, false);

            RectTransform titleTurnOffRectTransform = titleTurnOff.AddComponent <RectTransform>();

            MyUtilities.Anchor(ref titleTurnOffRectTransform, MyUtilities.EAnchorPreset.MiddleCenter, MyUtilities.EAnchorPivot.MiddleCenter, 50, 50, 50, 0);
            Text titleTurnOffText = titleTurnOff.AddComponent <Text>();

            titleTurnOffText.text               = string.Empty;
            titleTurnOffText.fontSize           = 40;
            titleTurnOffText.supportRichText    = false;
            titleTurnOffText.alignment          = TextAnchor.MiddleCenter;
            titleTurnOffText.horizontalOverflow = HorizontalWrapMode.Overflow;
            titleTurnOffText.verticalOverflow   = VerticalWrapMode.Overflow;
            titleTurnOffText.color              = Color.black;
            titleTurnOffText.raycastTarget      = false;

            GameObject positionTurnOn = new GameObject("PositionTurnOn");

            positionTurnOn.SetActive(false);
            positionTurnOn.transform.SetParent(background.transform, false);

            RectTransform positionTurnOnRectTransform = positionTurnOn.AddComponent <RectTransform>();

            MyUtilities.Anchor(ref positionTurnOnRectTransform, MyUtilities.EAnchorPreset.MiddleCenter, MyUtilities.EAnchorPivot.MiddleCenter, 10, 10, 50, 0);

            GameObject positionTurnOff = new GameObject("PositionTurnOff");

            positionTurnOff.SetActive(false);
            positionTurnOff.transform.SetParent(background.transform, false);

            RectTransform positionTurnOffRectTransform = positionTurnOff.AddComponent <RectTransform>();

            MyUtilities.Anchor(ref positionTurnOffRectTransform, MyUtilities.EAnchorPreset.MiddleCenter, MyUtilities.EAnchorPivot.MiddleCenter, 10, 10, -50, 0);

            MyUGUIToggleButton objToggleButton = obj.AddComponent <MyUGUIToggleButton>();

            objToggleButton.mButton          = backgroundButton;
            objToggleButton.mBackground      = backgroundImage;
            objToggleButton.mToggle          = toggleImage;
            objToggleButton.mTitleTurnOn     = titleTurnOnText;
            objToggleButton.mTitleTurnOff    = titleTurnOffText;
            objToggleButton.mTurnOnPosition  = positionTurnOn.transform;
            objToggleButton.mTurnOffPosition = positionTurnOff.transform;

            EditorGUIUtility.PingObject(obj);
            Selection.activeGameObject = obj.gameObject;
        }