├── Assets ├── Scenes.meta ├── Scenes │ ├── scene.unity │ └── scene.unity.meta ├── Scripts.meta ├── Scripts │ ├── SettingsMenu.cs │ ├── SettingsMenu.cs.meta │ ├── SettingsMenuItem.cs │ └── SettingsMenuItem.cs.meta ├── Sprites.meta └── Sprites │ ├── UIButtons.png │ ├── UIButtons.png.meta │ ├── icons2.png │ ├── icons2.png.meta │ ├── icons3.png │ ├── icons3.png.meta │ ├── icons4.png │ └── icons4.png.meta ├── LICENCE └── README.md /Assets/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7edd6b18d47cc194db32ad24bd4cc4c9 3 | folderAsset: yes 4 | timeCreated: 1632338884 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Scenes/scene.unity: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/herbou/Unity_ExpandableUIAnim/15995bfa0a4e6d5af1091b6149b650c3ba886ece/Assets/Scenes/scene.unity -------------------------------------------------------------------------------- /Assets/Scenes/scene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 05793a5928221aa428a11f5a748c347d 3 | timeCreated: 1632338884 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a26f8cfb59acf9a49a9cb0a4cbc1463a 3 | folderAsset: yes 4 | timeCreated: 1632338884 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Scripts/SettingsMenu.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine ; 2 | using UnityEngine.UI ; 3 | using DG.Tweening ; 4 | 5 | public class SettingsMenu : MonoBehaviour { 6 | [Header ("space between menu items")] 7 | [SerializeField] Vector2 spacing ; 8 | 9 | [Space] 10 | [Header ("Main button rotation")] 11 | [SerializeField] float rotationDuration ; 12 | [SerializeField] Ease rotationEase ; 13 | 14 | [Space] 15 | [Header ("Animation")] 16 | [SerializeField] float expandDuration ; 17 | [SerializeField] float collapseDuration ; 18 | [SerializeField] Ease expandEase ; 19 | [SerializeField] Ease collapseEase ; 20 | 21 | [Space] 22 | [Header ("Fading")] 23 | [SerializeField] float expandFadeDuration ; 24 | [SerializeField] float collapseFadeDuration ; 25 | 26 | Button mainButton ; 27 | SettingsMenuItem[] menuItems ; 28 | 29 | //is menu opened or not 30 | bool isExpanded = false ; 31 | 32 | Vector2 mainButtonPosition ; 33 | int itemsCount ; 34 | 35 | void Start () { 36 | //add all the items to the menuItems array 37 | itemsCount = transform.childCount - 1 ; 38 | menuItems = new SettingsMenuItem[itemsCount] ; 39 | for (int i = 0; i < itemsCount; i++) { 40 | // +1 to ignore the main button 41 | menuItems [ i ] = transform.GetChild (i + 1).GetComponent () ; 42 | } 43 | 44 | mainButton = transform.GetChild (0).GetComponent