I created a quick & dirty “Settings Panel”. It’s possible to toggle the visibility of the “Settings Panel” with a UI Button. (Button is always visible) At least it is also possible to create more than one panel for settings, keep all the values visible during design-time and make them visible on request during run-time.
Todo:
-Colors
-Images for final buttons
-Test the size of the button
-Other sides? (dynamic?)
First implemented in:
E:\00_today\2016-10-26-files\UNITY_JellyAssetTest_2016-10-26\jelly_cube_test001\Assets\ButtonPanelHideShow.cs
Setup in the Unity Editor (Hierarchy):
The Script:
using UnityEngine; using System.Collections; using UnityEngine.UI; using System; public class ButtonPanelHideShow : MonoBehaviour { [SerializeField]private bool inHiddenMode = true; public RectTransform assignedPanel; private Vector2 panelOpenXY = new Vector2(0f, 0f); private Vector2 panelClosedXY = new Vector2(150f,0.0f); public RectTransform openCloseButton; private Vector2 btnOpenXY = new Vector2(0f, 0f); private Vector2 btnClosedXY = new Vector2(150f, 0.0f); //public Color32 uiColor; //Not used right now public void Awake() { //Check or Get the Panel we want to controll if(assignedPanel == null) { assignedPanel = GetComponentInParent<RectTransform>(); } if (openCloseButton == null) { Debug.Log("WARNING Button not assigend!"); } panelClosedXY = assignedPanel.anchoredPosition; panelOpenXY = panelClosedXY; panelOpenXY.x = 0; btnClosedXY = openCloseButton.anchoredPosition; btnOpenXY = btnClosedXY; btnOpenXY.x = 0-openCloseButton.sizeDelta.x; //Init = allways hidden on start inHiddenMode = false; //Will be switched asap in next fu OnClickHideShowButton(); } public void OnClickHideShowButton() { inHiddenMode = !inHiddenMode; if (inHiddenMode) { assignedPanel.anchoredPosition = panelClosedXY; openCloseButton.anchoredPosition = btnClosedXY; } else { assignedPanel.anchoredPosition = panelOpenXY; openCloseButton.anchoredPosition = btnOpenXY; } } }
This example is available as a prefab on the shared dev drive.