替换按钮点击效果

    技术2022-07-11  89

    using UnityEngine; using UnityEngine.UI; using UnityEditor; using System.IO; using System.Collections.Generic;

    public class EditorButton : EditorWindow {     [MenuItem("自定义工具/换UI工具/替换按钮点击效果")]     private static void ShowWindow()     {         EditorWindow.GetWindow<EditorButton>(false, "替换按钮点击效果");     }

        RuntimeAnimatorController controller = null;     Vector2 scrollPos = new Vector2(0, 0);     List<GameObject> gos = new List<GameObject>();

        private void OnGUI()     {         GUILayout.Space(10);         GUILayout.Label("AnimatorController:");         controller = (RuntimeAnimatorController)EditorGUILayout.ObjectField(controller, typeof(RuntimeAnimatorController), true, GUILayout.MinWidth(100f));

            GUILayout.Space(20);         if (GUILayout.Button("修改Button"))         {             ChangeButton();             Repaint();         }

            if (GUILayout.Button("修改Toggle"))         {             ChangeToggle();             Repaint();         }

            scrollPos = EditorGUILayout.BeginScrollView(scrollPos);         foreach (var go in gos)         {             EditorGUILayout.ObjectField(go, typeof(GameObject), true);         }         EditorGUILayout.EndScrollView();     }

        #region 修改Button     private void ChangeButton()     {         if (null == controller)         {             Debug.LogError("No AnimatorController!!");             return;         }                  GameObject[] gameObjects = Selection.gameObjects;         if (gameObjects == null || gameObjects.Length == 0)         {             Debug.LogWarning("No Select!!");             return;         }

            //清除修改列表         gos.Clear();

            foreach(var go in gameObjects)         {             var buttons = go.GetComponentsInChildren<Button>(true);             foreach(var button in buttons)             {                 ChangeButtonHandler(button.gameObject);             }         }     }

        private void ChangeButtonHandler(GameObject go)     {         var button = go.GetComponent<Button>();         button.transition = Selectable.Transition.Animation;         button.animationTriggers.disabledTrigger = "Disabled";         button.animationTriggers.highlightedTrigger = "Highlighted";         button.animationTriggers.normalTrigger = "Normal";         button.animationTriggers.pressedTrigger = "Pressed";         //var preserve = go.GetComponent<Nirvana.PreserveAnimatorOnDisable>();         //if (null == preserve)         //{         //    preserve = go.AddComponent<Nirvana.PreserveAnimatorOnDisable>();         //}         var animator = go.GetComponent<Animator>();         if (null == animator)         {             animator = go.AddComponent<Animator>();         }         animator.runtimeAnimatorController = controller;

            var recttrans = go.GetComponent<RectTransform>();         if (null != recttrans)         {             recttrans.pivot = new Vector2(0.5f, 0.5f);         }

            EditorUtility.SetDirty(go);

            gos.Add(go);         //Debug.Log("修改成功!按钮名字为:" + go.name);     }     #endregion

        #region 修改Toggle     private void ChangeToggle()     {         if (null == controller)         {             Debug.LogError("No AnimatorController!!");             return;         }

            GameObject[] gameObjects = Selection.gameObjects;         if (gameObjects == null || gameObjects.Length == 0)         {             Debug.LogWarning("No Select!!");             return;         }

            //清除修改列表         gos.Clear();

            foreach (var go in gameObjects)         {             var toggles = go.GetComponentsInChildren<Toggle>(true);             foreach (var toggle in toggles)             {                 ChangeToggleHandler(toggle.gameObject);             }         }     }

        private void ChangeToggleHandler(GameObject go)     {         var toggle = go.GetComponent<Toggle>();         toggle.transition = Selectable.Transition.Animation;         toggle.animationTriggers.disabledTrigger = "Disabled";         toggle.animationTriggers.highlightedTrigger = "Highlighted";         toggle.animationTriggers.normalTrigger = "Normal";         toggle.animationTriggers.pressedTrigger = "Pressed";

            var animator = go.GetComponent<Animator>();         if (null == animator)         {             animator = go.AddComponent<Animator>();         }         animator.runtimeAnimatorController = controller;

            var recttrans = go.GetComponent<RectTransform>();         if (null != recttrans)         {             recttrans.pivot = new Vector2(0.5f, 0.5f);         }

            EditorUtility.SetDirty(go);

            gos.Add(go);     }     #endregion }  

    Processed: 0.012, SQL: 9