Fixed PageChanged event for HSS/VSS

Fixed WorldSpace use of HSS/VSS (also created a new feature :D)
Minor editor options fix for boxslider

--HG--
branch : develop_5.3
release
Simon Jackson 2016-12-30 15:44:36 +00:00
parent f0ba3cfae5
commit aadba190c8
2 changed files with 69 additions and 10 deletions

View File

@ -1654,6 +1654,42 @@ namespace UnityEditor.UI
Selection.activeGameObject = go; Selection.activeGameObject = go;
} }
#region BoxSlider
[MenuItem("GameObject/UI/Extensions/Box Slider", false)]
static public void AddBoxSlider(MenuCommand menuCommand)
{
GameObject uiboxSliderRoot = CreateUIElementRoot("Box Slider", menuCommand, s_ImageGUIElementSize);
GameObject handleSlideArea = CreateUIObject("Handle Slide Area", uiboxSliderRoot);
GameObject handle = CreateUIObject("Handle", handleSlideArea);
// Set RectTransform to stretch
SetAnchorsAndStretch(uiboxSliderRoot);
Image backgroundImage = uiboxSliderRoot.AddComponent<Image>();
backgroundImage.sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>(kBackgroundSpriteResourcePath);
backgroundImage.type = Image.Type.Sliced;
backgroundImage.fillCenter = false;
backgroundImage.color = new Color(1f, 1f, 1f, 0.392f);
RectTransform handleRect = SetAnchorsAndStretch(handle);
handleRect.sizeDelta = new Vector2(25, 25);
Image handleImage = handle.AddComponent<Image>();
handleImage.sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>(kKnobPath);
handleImage.type = Image.Type.Simple;
handleImage.fillCenter = false;
handleImage.color = new Color(1f, 1f, 1f, 0.392f);
BoxSlider selectableArea = uiboxSliderRoot.AddComponent<BoxSlider>();
selectableArea.HandleRect = handle.GetComponent<RectTransform>();
selectableArea.ValueX = selectableArea.ValueY = 0.5f;
Selection.activeGameObject = uiboxSliderRoot;
}
#endregion
#endregion #endregion
#region Helper Functions #region Helper Functions
@ -1787,6 +1823,15 @@ namespace UnityEditor.UI
return buttonRoot; return buttonRoot;
} }
private static RectTransform SetAnchorsAndStretch(GameObject root)
{
RectTransform rectTransformRoot = root.GetComponent<RectTransform>();
rectTransformRoot.anchorMin = new Vector2(0.5f, 0.5f);
rectTransformRoot.anchorMax = new Vector2(0.5f, 0.5f);
rectTransformRoot.anchoredPosition = Vector2.zero;
return rectTransformRoot;
}
#endregion #endregion
} }

View File

@ -80,12 +80,16 @@ namespace UnityEngine.UI.Extensions
{ {
_previousPage = _currentPage; _previousPage = _currentPage;
_currentPage = value; _currentPage = value;
ChangeBulletsInfo(_currentPage);
if(MaskArea) UpdateVisible(); if(MaskArea) UpdateVisible();
ScreenChange();
ChangeBulletsInfo(_currentPage);
} }
} }
} }
[Tooltip("(Experimental)\nBy default, child array objects will use the parent transform\nHowever you can disable this for some interesting effects")]
public bool UseParentTransform = true;
[Tooltip("Scroll Snap children. (optional)\nEither place objects in the scene as children OR\nPrefabs in this array, NOT BOTH")] [Tooltip("Scroll Snap children. (optional)\nEither place objects in the scene as children OR\nPrefabs in this array, NOT BOTH")]
public GameObject[] ChildObjects; public GameObject[] ChildObjects;
@ -156,10 +160,21 @@ namespace UnityEngine.UI.Extensions
internal void InitialiseChildObjectsFromArray() internal void InitialiseChildObjectsFromArray()
{ {
int childCount = ChildObjects.Length; int childCount = ChildObjects.Length;
RectTransform childRect;
GameObject child;
for (int i = 0; i < childCount; i++) for (int i = 0; i < childCount; i++)
{ {
ChildObjects[i] = GameObject.Instantiate(ChildObjects[i]); child = GameObject.Instantiate(ChildObjects[i]);
ChildObjects[i].transform.SetParent(_screensContainer.transform); //Optionally, use original GO transform when initialising, by default will use parent RectTransform position/rotation
if (UseParentTransform)
{
childRect = child.GetComponent<RectTransform>();
childRect.rotation = _screensContainer.rotation;
childRect.localScale = _screensContainer.localScale;
childRect.position = _screensContainer.position;
}
child.transform.SetParent(_screensContainer.transform);
ChildObjects[i] = child;
if (MaskArea && ChildObjects[i].activeSelf) if (MaskArea && ChildObjects[i].activeSelf)
{ {
ChildObjects[i].SetActive(false); ChildObjects[i].SetActive(false);
@ -306,9 +321,8 @@ namespace UnityEngine.UI.Extensions
OnSelectionChangeStartEvent.Invoke(); OnSelectionChangeStartEvent.Invoke();
} }
internal void ScreenChange(int previousScreen) internal void ScreenChange()
{ {
OnSelectionPageChangedEvent.Invoke(_currentPage); OnSelectionPageChangedEvent.Invoke(_currentPage);
} }