Added initial version of the UI Vertical scroller from Mrs. YakaYocha
Complete with component and editor menu options --HG-- branch : develop_5.3release
parent
84edb62e91
commit
f72eb7268f
|
@ -470,6 +470,87 @@ namespace UnityEditor.UI
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region UIVertical Scroller
|
||||||
|
[MenuItem("GameObject/UI/Extensions/UI Vertical Scroller", false)]
|
||||||
|
static public void AddUIVerticallScroller(MenuCommand menuCommand)
|
||||||
|
{
|
||||||
|
GameObject uiVerticalScrollerRoot = CreateUIElementRoot("UI Vertical Scroller", menuCommand, s_ThickGUIElementSize);
|
||||||
|
|
||||||
|
GameObject uiScrollerCenter = CreateUIObject("Center", uiVerticalScrollerRoot);
|
||||||
|
|
||||||
|
GameObject childContent = CreateUIObject("Content", uiVerticalScrollerRoot);
|
||||||
|
|
||||||
|
// Set RectTransform to stretch
|
||||||
|
RectTransform rectTransformScrollSnapRoot = uiVerticalScrollerRoot.GetComponent<RectTransform>();
|
||||||
|
rectTransformScrollSnapRoot.anchorMin = new Vector2(0.5f, 0.5f);
|
||||||
|
rectTransformScrollSnapRoot.anchorMax = new Vector2(0.5f, 0.5f);
|
||||||
|
rectTransformScrollSnapRoot.anchoredPosition = Vector2.zero;
|
||||||
|
rectTransformScrollSnapRoot.sizeDelta = new Vector2(500f, 150f);
|
||||||
|
|
||||||
|
// Add required ScrollRect
|
||||||
|
ScrollRect sr = uiVerticalScrollerRoot.AddComponent<ScrollRect>();
|
||||||
|
sr.vertical = true;
|
||||||
|
sr.horizontal = false;
|
||||||
|
sr.movementType = ScrollRect.MovementType.Unrestricted;
|
||||||
|
var uiscr = uiVerticalScrollerRoot.AddComponent<UIVerticalScroller>();
|
||||||
|
|
||||||
|
//Setup container center point
|
||||||
|
RectTransform rectTransformCenter = uiScrollerCenter.GetComponent<RectTransform>();
|
||||||
|
rectTransformCenter.anchorMin = new Vector2(0f, 0.3f);
|
||||||
|
rectTransformCenter.anchorMax = new Vector2(1f, 0.6f);
|
||||||
|
rectTransformCenter.sizeDelta = Vector2.zero;
|
||||||
|
|
||||||
|
uiscr._center = uiScrollerCenter.GetComponent<RectTransform>();
|
||||||
|
|
||||||
|
//Setup Content container
|
||||||
|
RectTransform rectTransformContent = childContent.GetComponent<RectTransform>();
|
||||||
|
rectTransformContent.anchorMin = Vector2.zero;
|
||||||
|
rectTransformContent.anchorMax = new Vector2(1f, 1f);
|
||||||
|
rectTransformContent.sizeDelta = Vector2.zero;
|
||||||
|
|
||||||
|
sr.content = rectTransformContent;
|
||||||
|
|
||||||
|
// Add sample children
|
||||||
|
for (int i = 0; i < 10; i++)
|
||||||
|
{
|
||||||
|
GameObject childPage = CreateUIObject("Page_" + i, childContent);
|
||||||
|
|
||||||
|
GameObject childText = CreateUIObject("Text", childPage);
|
||||||
|
|
||||||
|
//Setup 1st Child
|
||||||
|
Image pageImage = childPage.AddComponent<Image>();
|
||||||
|
pageImage.sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>(kStandardSpritePath);
|
||||||
|
pageImage.type = Image.Type.Sliced;
|
||||||
|
pageImage.color = s_DefaultSelectableColor;
|
||||||
|
|
||||||
|
RectTransform rectTransformPage = childPage.GetComponent<RectTransform>();
|
||||||
|
rectTransformPage.anchorMin = new Vector2(0f, 0.5f);
|
||||||
|
rectTransformPage.anchorMax = new Vector2(1f, 0.5f);
|
||||||
|
rectTransformPage.sizeDelta = new Vector2(0f, 80f);
|
||||||
|
rectTransformPage.pivot = new Vector2(0.5f, 0.5f);
|
||||||
|
rectTransformPage.localPosition = new Vector3(0, 80 * i, 0);
|
||||||
|
childPage.AddComponent<Button>();
|
||||||
|
|
||||||
|
var childCG = childPage.AddComponent<CanvasGroup>();
|
||||||
|
childCG.interactable = false;
|
||||||
|
|
||||||
|
//Setup Text on Item
|
||||||
|
Text text = childText.AddComponent<Text>();
|
||||||
|
text.text = "Item_" + i;
|
||||||
|
text.alignment = TextAnchor.MiddleCenter;
|
||||||
|
text.color = new Color(0.196f, 0.196f, 0.196f);
|
||||||
|
|
||||||
|
//Setup Text on Item
|
||||||
|
RectTransform rectTransformPageText = childText.GetComponent<RectTransform>();
|
||||||
|
rectTransformPageText.anchorMin = new Vector2(0.5f, 0.5f);
|
||||||
|
rectTransformPageText.anchorMax = new Vector2(0.5f, 0.5f);
|
||||||
|
rectTransformPageText.pivot = new Vector2(0.5f, 0.5f);
|
||||||
|
}
|
||||||
|
|
||||||
|
Selection.activeGameObject = uiVerticalScrollerRoot;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
[MenuItem("GameObject/UI/Extensions/UI Button", false)]
|
[MenuItem("GameObject/UI/Extensions/UI Button", false)]
|
||||||
static public void AddUIButton(MenuCommand menuCommand)
|
static public void AddUIButton(MenuCommand menuCommand)
|
||||||
{
|
{
|
||||||
|
|
|
@ -0,0 +1,188 @@
|
||||||
|
/// Credit Mrs. YakaYocha
|
||||||
|
/// Sourced from - https://www.youtube.com/channel/UCHp8LZ_0-iCvl-5pjHATsgw
|
||||||
|
/// Please donate: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=RJ8D9FRFQF9VS
|
||||||
|
|
||||||
|
using UnityEngine.Events;
|
||||||
|
|
||||||
|
namespace UnityEngine.UI.Extensions
|
||||||
|
{
|
||||||
|
[RequireComponent(typeof(ScrollRect))]
|
||||||
|
[AddComponentMenu("Layout/Extensions/Vertical Scroller")]
|
||||||
|
public class UIVerticalScroller : MonoBehaviour
|
||||||
|
{
|
||||||
|
[Tooltip("Scrollable area (content of desired ScrollRect)")]
|
||||||
|
public RectTransform _scrollingPanel;
|
||||||
|
[Tooltip("Elements to populate inside the scroller")]
|
||||||
|
public GameObject[] _arrayOfElements;
|
||||||
|
[Tooltip("Center display area (position of zoomed content)")]
|
||||||
|
public RectTransform _center;
|
||||||
|
[Tooltip("Select the item to be in center on start. (optional)")]
|
||||||
|
public int StartingIndex = -1;
|
||||||
|
[Tooltip("Button to go to the next page. (optional)")]
|
||||||
|
public GameObject ScrollUpButton;
|
||||||
|
[Tooltip("Button to go to the previous page. (optional)")]
|
||||||
|
public GameObject ScrollDownButton;
|
||||||
|
[Tooltip("Event fired when a specific item is clicked, exposes index number of item. (optional)")]
|
||||||
|
public UnityEvent<int> ButtonClicked;
|
||||||
|
|
||||||
|
|
||||||
|
private float[] distReposition;
|
||||||
|
private float[] distance;
|
||||||
|
//private int elementsDistance;
|
||||||
|
private int minElementsNum;
|
||||||
|
private int elementLength;
|
||||||
|
private int elementHalfLength;
|
||||||
|
private float deltaY;
|
||||||
|
private string result;
|
||||||
|
|
||||||
|
public UIVerticalScroller() { }
|
||||||
|
|
||||||
|
public UIVerticalScroller(RectTransform scrollingPanel, GameObject[] arrayOfElements, RectTransform center)
|
||||||
|
{
|
||||||
|
_scrollingPanel = scrollingPanel;
|
||||||
|
_arrayOfElements = arrayOfElements;
|
||||||
|
_center = center;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void Awake()
|
||||||
|
{
|
||||||
|
var scrollRect = GetComponent<ScrollRect>();
|
||||||
|
if (!_scrollingPanel)
|
||||||
|
{
|
||||||
|
_scrollingPanel = scrollRect.content;
|
||||||
|
}
|
||||||
|
if (!_center)
|
||||||
|
{
|
||||||
|
Debug.LogError("Please define the RectTransform for the Center viewport of the scrollable area");
|
||||||
|
}
|
||||||
|
if (_arrayOfElements == null || _arrayOfElements.Length == 0)
|
||||||
|
{
|
||||||
|
var childCount = scrollRect.content.childCount;
|
||||||
|
if (childCount > 0)
|
||||||
|
{
|
||||||
|
_arrayOfElements = new GameObject[childCount];
|
||||||
|
for (int i = 0; i < childCount; i++)
|
||||||
|
{
|
||||||
|
_arrayOfElements[i] = scrollRect.content.GetChild(i).gameObject;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Start()
|
||||||
|
{
|
||||||
|
if (_arrayOfElements.Length < 1)
|
||||||
|
{
|
||||||
|
Debug.Log("No child content found, exiting..");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
elementLength = _arrayOfElements.Length;
|
||||||
|
distance = new float[elementLength];
|
||||||
|
distReposition = new float[elementLength];
|
||||||
|
|
||||||
|
//get distance between buttons
|
||||||
|
//elementsDistance = (int)Mathf.Abs(_arrayOfElements[1].GetComponent<RectTransform>().anchoredPosition.y - _arrayOfElements[0].GetComponent<RectTransform>().anchoredPosition.y);
|
||||||
|
deltaY = _arrayOfElements[0].GetComponent<RectTransform>().rect.height * elementLength / 3 * 2;
|
||||||
|
Vector2 startPosition = new Vector2(_scrollingPanel.anchoredPosition.x, -deltaY);
|
||||||
|
_scrollingPanel.anchoredPosition = startPosition;
|
||||||
|
|
||||||
|
for (var i = 0; i < _arrayOfElements.Length; i++)
|
||||||
|
{
|
||||||
|
AddListener(_arrayOfElements[i], i);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ScrollUpButton)
|
||||||
|
ScrollUpButton.GetComponent<Button>().onClick.AddListener(() => { ScrollUp(); });
|
||||||
|
|
||||||
|
if (ScrollDownButton)
|
||||||
|
ScrollDownButton.GetComponent<Button>().onClick.AddListener(() => { ScrollDown(); });
|
||||||
|
|
||||||
|
if (StartingIndex > -1)
|
||||||
|
{
|
||||||
|
StartingIndex = StartingIndex > _arrayOfElements.Length ? _arrayOfElements.Length - 1 : StartingIndex;
|
||||||
|
SnapToElement(StartingIndex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AddListener(GameObject button, int index)
|
||||||
|
{
|
||||||
|
button.GetComponent<Button>().onClick.AddListener(() => DoSomething(index));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DoSomething(int index)
|
||||||
|
{
|
||||||
|
if (ButtonClicked != null)
|
||||||
|
{
|
||||||
|
ButtonClicked.Invoke(index);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Update()
|
||||||
|
{
|
||||||
|
if (_arrayOfElements.Length < 1)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = 0; i < elementLength; i++)
|
||||||
|
{
|
||||||
|
distReposition[i] = _center.GetComponent<RectTransform>().position.y - _arrayOfElements[i].GetComponent<RectTransform>().position.y;
|
||||||
|
distance[i] = Mathf.Abs(distReposition[i]);
|
||||||
|
|
||||||
|
//Magnifying effect
|
||||||
|
float scale = Mathf.Max(0.7f, 1 / (1 + distance[i] / 200));
|
||||||
|
_arrayOfElements[i].GetComponent<RectTransform>().transform.localScale = new Vector3(scale, scale, 1f);
|
||||||
|
}
|
||||||
|
float minDistance = Mathf.Min(distance);
|
||||||
|
|
||||||
|
for (var i = 0; i < elementLength; i++)
|
||||||
|
{
|
||||||
|
_arrayOfElements[i].GetComponent<CanvasGroup>().interactable = false;
|
||||||
|
if (minDistance == distance[i])
|
||||||
|
{
|
||||||
|
minElementsNum = i;
|
||||||
|
_arrayOfElements[i].GetComponent<CanvasGroup>().interactable = true;
|
||||||
|
result = _arrayOfElements[i].GetComponentInChildren<Text>().text;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ScrollingElements(-_arrayOfElements[minElementsNum].GetComponent<RectTransform>().anchoredPosition.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ScrollingElements(float position)
|
||||||
|
{
|
||||||
|
float newY = Mathf.Lerp(_scrollingPanel.anchoredPosition.y, position, Time.deltaTime * 1f);
|
||||||
|
Vector2 newPosition = new Vector2(_scrollingPanel.anchoredPosition.x, newY);
|
||||||
|
_scrollingPanel.anchoredPosition = newPosition;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetResults()
|
||||||
|
{
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SnapToElement(int element)
|
||||||
|
{
|
||||||
|
float deltaElementPositionY = _arrayOfElements[0].GetComponent<RectTransform>().rect.height * element;
|
||||||
|
Vector2 newPosition = new Vector2(_scrollingPanel.anchoredPosition.x, -deltaElementPositionY);
|
||||||
|
_scrollingPanel.anchoredPosition = newPosition;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ScrollUp()
|
||||||
|
{
|
||||||
|
float deltaUp = _arrayOfElements[0].GetComponent<RectTransform>().rect.height / 1.2f;
|
||||||
|
Vector2 newPositionUp = new Vector2(_scrollingPanel.anchoredPosition.x, _scrollingPanel.anchoredPosition.y - deltaUp);
|
||||||
|
_scrollingPanel.anchoredPosition = Vector2.Lerp(_scrollingPanel.anchoredPosition, newPositionUp, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ScrollDown()
|
||||||
|
{
|
||||||
|
float deltaDown = _arrayOfElements[0].GetComponent<RectTransform>().rect.height / 1.2f;
|
||||||
|
Vector2 newPositionDown = new Vector2(_scrollingPanel.anchoredPosition.x, _scrollingPanel.anchoredPosition.y + deltaDown);
|
||||||
|
_scrollingPanel.anchoredPosition = newPositionDown;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b9f902652954d44beb3a916831d27435
|
||||||
|
timeCreated: 1449409849
|
||||||
|
licenseType: Free
|
||||||
|
MonoImporter:
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,9 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c94ebd5b05e589d45b7d99b1dfb64135
|
||||||
|
folderAsset: yes
|
||||||
|
timeCreated: 1450872931
|
||||||
|
licenseType: Pro
|
||||||
|
DefaultImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,9 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6a0cecb173b794c3bb33e379defdeeb0
|
||||||
|
folderAsset: yes
|
||||||
|
timeCreated: 1449409914
|
||||||
|
licenseType: Free
|
||||||
|
DefaultImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Binary file not shown.
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ec6f9b1230e4a4896b7be2e60d3be758
|
||||||
|
timeCreated: 1448815288
|
||||||
|
licenseType: Free
|
||||||
|
NativeFormatImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Binary file not shown.
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6d45e8f0aa19044ffb3553ca52febef2
|
||||||
|
timeCreated: 1448814882
|
||||||
|
licenseType: Free
|
||||||
|
NativeFormatImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Binary file not shown.
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 65ce75600991941569988ab4538a21a6
|
||||||
|
timeCreated: 1448814778
|
||||||
|
licenseType: Free
|
||||||
|
NativeFormatImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,9 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 573635efe02d54e20a59cd3023afa514
|
||||||
|
folderAsset: yes
|
||||||
|
timeCreated: 1449409946
|
||||||
|
licenseType: Free
|
||||||
|
DefaultImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Binary file not shown.
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: dc87f62a4e5c94019904b8b6037818b5
|
||||||
|
timeCreated: 1449409834
|
||||||
|
licenseType: Free
|
||||||
|
DefaultImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,9 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f1caec3cabf7c4eaaa5b2ad30cf018a9
|
||||||
|
folderAsset: yes
|
||||||
|
timeCreated: 1449409928
|
||||||
|
licenseType: Free
|
||||||
|
DefaultImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,231 @@
|
||||||
|
/// <summary>
|
||||||
|
/// Brought you by Mrs. YakaYocha
|
||||||
|
/// https://www.youtube.com/channel/UCHp8LZ_0-iCvl-5pjHATsgw
|
||||||
|
///
|
||||||
|
/// Please donate: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=RJ8D9FRFQF9VS
|
||||||
|
/// </summary>
|
||||||
|
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
using System;
|
||||||
|
using UnityEngine.UI.Extensions;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public class ScrollingCalendar : MonoBehaviour
|
||||||
|
|
||||||
|
{
|
||||||
|
public RectTransform monthsScrollingPanel;
|
||||||
|
public RectTransform yearsScrollingPanel;
|
||||||
|
public RectTransform daysScrollingPanel;
|
||||||
|
|
||||||
|
public GameObject yearsButtonPrefab;
|
||||||
|
public GameObject monthsButtonPrefab;
|
||||||
|
public GameObject daysButtonPrefab;
|
||||||
|
|
||||||
|
private GameObject[] monthsButtons;
|
||||||
|
private GameObject[] yearsButtons;
|
||||||
|
private GameObject[] daysButtons;
|
||||||
|
|
||||||
|
public RectTransform monthCenter;
|
||||||
|
public RectTransform yearsCenter;
|
||||||
|
public RectTransform daysCenter;
|
||||||
|
|
||||||
|
UIVerticalScroller yearsVerticalScroller;
|
||||||
|
UIVerticalScroller monthsVerticalScroller;
|
||||||
|
UIVerticalScroller daysVerticalScroller;
|
||||||
|
|
||||||
|
public InputField inputFieldDays;
|
||||||
|
public InputField inputFieldMonths;
|
||||||
|
public InputField inputFieldYears;
|
||||||
|
|
||||||
|
public Text dateText;
|
||||||
|
|
||||||
|
private int daysSet;
|
||||||
|
private int monthsSet;
|
||||||
|
private int yearsSet;
|
||||||
|
|
||||||
|
private void InitializeYears()
|
||||||
|
{
|
||||||
|
int currentYear = int.Parse(System.DateTime.Now.ToString("yyyy"));
|
||||||
|
|
||||||
|
int[] arrayYears = new int[currentYear+1 - 1900];
|
||||||
|
|
||||||
|
yearsButtons = new GameObject[arrayYears.Length];
|
||||||
|
|
||||||
|
for (int i = 0; i < arrayYears.Length; i++)
|
||||||
|
{
|
||||||
|
arrayYears[i] = 1900 + i;
|
||||||
|
|
||||||
|
GameObject clone = (GameObject)Instantiate(yearsButtonPrefab, new Vector3(0, i*80, 0), Quaternion.Euler(new Vector3(0, 0, 0))) as GameObject;
|
||||||
|
clone.transform.SetParent(yearsScrollingPanel);
|
||||||
|
clone.transform.localScale = new Vector3(1, 1, 1);
|
||||||
|
clone.GetComponentInChildren<Text>().text = "" + arrayYears[i];
|
||||||
|
clone.name = "Year_" + arrayYears[i];
|
||||||
|
clone.AddComponent<CanvasGroup>();
|
||||||
|
yearsButtons[i] = clone;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//Initialize Months
|
||||||
|
private void InitializeMonths()
|
||||||
|
{
|
||||||
|
int[] months = new int[12];
|
||||||
|
|
||||||
|
monthsButtons = new GameObject[months.Length];
|
||||||
|
for (int i = 0; i < months.Length; i++)
|
||||||
|
{
|
||||||
|
string month = "";
|
||||||
|
months[i] = i;
|
||||||
|
|
||||||
|
GameObject clone = (GameObject)Instantiate(monthsButtonPrefab, new Vector3(0, i * 80, 0), Quaternion.Euler(new Vector3(0, 0, 0))) as GameObject;
|
||||||
|
clone.transform.SetParent(monthsScrollingPanel);
|
||||||
|
clone.transform.localScale = new Vector3(1, 1, 1);
|
||||||
|
|
||||||
|
switch(i)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
month = "Jan";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
month = "Feb";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
month = "Mar";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
month = "Apr";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
month = "May";
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
month = "Jun";
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
month = "Jul";
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
month = "Aug";
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
month = "Sep";
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
month = "Oct";
|
||||||
|
break;
|
||||||
|
case 10:
|
||||||
|
month = "Nov";
|
||||||
|
break;
|
||||||
|
case 11:
|
||||||
|
month = "Dec";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
clone.GetComponentInChildren<Text>().text = month;
|
||||||
|
clone.name = "Month_" + months[i];
|
||||||
|
clone.AddComponent<CanvasGroup>();
|
||||||
|
monthsButtons[i] = clone;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void InitializeDays()
|
||||||
|
{
|
||||||
|
int[] days = new int[31];
|
||||||
|
daysButtons = new GameObject[days.Length];
|
||||||
|
|
||||||
|
for (var i = 0; i < days.Length; i++)
|
||||||
|
{
|
||||||
|
days[i] = i+1;
|
||||||
|
GameObject clone = (GameObject)Instantiate(daysButtonPrefab, new Vector3(0, i * 80, 0), Quaternion.Euler(new Vector3(0, 0, 0))) as GameObject;
|
||||||
|
clone.transform.SetParent(daysScrollingPanel);
|
||||||
|
clone.transform.localScale = new Vector3(1, 1, 1);
|
||||||
|
clone.GetComponentInChildren<Text>().text = "" + days[i];
|
||||||
|
clone.name = "Day_" + days[i];
|
||||||
|
clone.AddComponent<CanvasGroup>();
|
||||||
|
daysButtons[i] = clone;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Use this for initialization
|
||||||
|
public void Awake()
|
||||||
|
{
|
||||||
|
InitializeYears();
|
||||||
|
InitializeMonths();
|
||||||
|
InitializeDays();
|
||||||
|
|
||||||
|
//Yes Unity complains about this but it doesn't matter in this case.
|
||||||
|
monthsVerticalScroller = new UIVerticalScroller(monthsScrollingPanel, monthsButtons, monthCenter);
|
||||||
|
yearsVerticalScroller = new UIVerticalScroller (yearsScrollingPanel, yearsButtons, yearsCenter);
|
||||||
|
daysVerticalScroller = new UIVerticalScroller (daysScrollingPanel, daysButtons, daysCenter);
|
||||||
|
|
||||||
|
monthsVerticalScroller.Start();
|
||||||
|
yearsVerticalScroller.Start();
|
||||||
|
daysVerticalScroller.Start();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetDate()
|
||||||
|
{
|
||||||
|
daysSet = int.Parse(inputFieldDays.text) - 1;
|
||||||
|
monthsSet = int.Parse(inputFieldMonths.text) - 1;
|
||||||
|
yearsSet = int.Parse(inputFieldYears.text) - 1900;
|
||||||
|
|
||||||
|
daysVerticalScroller.SnapToElement(daysSet);
|
||||||
|
monthsVerticalScroller.SnapToElement(monthsSet);
|
||||||
|
yearsVerticalScroller.SnapToElement(yearsSet);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Update ()
|
||||||
|
{
|
||||||
|
monthsVerticalScroller.Update();
|
||||||
|
yearsVerticalScroller.Update();
|
||||||
|
daysVerticalScroller.Update();
|
||||||
|
|
||||||
|
string dayString = daysVerticalScroller.GetResults();
|
||||||
|
string monthString = monthsVerticalScroller.GetResults();
|
||||||
|
string yearsString = yearsVerticalScroller.GetResults();
|
||||||
|
|
||||||
|
if (dayString.EndsWith("1") && dayString != "11")
|
||||||
|
dayString = dayString + "st";
|
||||||
|
else if (dayString.EndsWith("2") && dayString != "12")
|
||||||
|
dayString = dayString + "nd";
|
||||||
|
else if (dayString.EndsWith("3") && dayString != "13")
|
||||||
|
dayString = dayString + "rd";
|
||||||
|
else
|
||||||
|
dayString = dayString + "th";
|
||||||
|
|
||||||
|
dateText.text = monthString + " " + dayString + " " + yearsString;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DaysScrollUp()
|
||||||
|
{
|
||||||
|
daysVerticalScroller.ScrollUp();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DaysScrollDown()
|
||||||
|
{
|
||||||
|
daysVerticalScroller.ScrollDown();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void MonthsScrollUp()
|
||||||
|
{
|
||||||
|
monthsVerticalScroller.ScrollUp();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void MonthsScrollDown()
|
||||||
|
{
|
||||||
|
monthsVerticalScroller.ScrollDown();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void YearsScrollUp()
|
||||||
|
{
|
||||||
|
yearsVerticalScroller.ScrollUp();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void YearsScrollDown()
|
||||||
|
{
|
||||||
|
yearsVerticalScroller.ScrollDown();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e0185937f87604a7497a35019c125107
|
||||||
|
timeCreated: 1449409849
|
||||||
|
licenseType: Free
|
||||||
|
MonoImporter:
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,9 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7ffd04bf6a590424fb623c185d6f6ec5
|
||||||
|
folderAsset: yes
|
||||||
|
timeCreated: 1450208395
|
||||||
|
licenseType: Free
|
||||||
|
DefaultImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Binary file not shown.
After Width: | Height: | Size: 29 KiB |
|
@ -0,0 +1,56 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1e2d444ae9d5a4ff1b47ffec28d5165c
|
||||||
|
timeCreated: 1450208403
|
||||||
|
licenseType: Free
|
||||||
|
TextureImporter:
|
||||||
|
fileIDToRecycleName: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
linearTexture: 0
|
||||||
|
correctGamma: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: .25
|
||||||
|
normalMapFilter: 0
|
||||||
|
isReadable: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 0
|
||||||
|
cubemapConvolution: 0
|
||||||
|
cubemapConvolutionSteps: 8
|
||||||
|
cubemapConvolutionExponent: 1.5
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: -1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
filterMode: -1
|
||||||
|
aniso: -1
|
||||||
|
mipBias: -1
|
||||||
|
wrapMode: 1
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
rGBM: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
spriteMode: 1
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: .5, y: .5}
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
textureType: 8
|
||||||
|
buildTargetSettings: []
|
||||||
|
spriteSheet:
|
||||||
|
sprites: []
|
||||||
|
spritePackingTag:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Loading…
Reference in New Issue