Display Unity UI Button Class Names on Mouseover (No Class Modification)
Certainly! Here's an example of how you can achieve this functionality using C# in Unity:\n\ncsharp\nusing UnityEngine;\nusing UnityEngine.EventSystems;\nusing UnityEngine.UI;\n\npublic class ButtonClassNameDisplayer : MonoBehaviour\n{\n private Button[] buttons;\n\n private void Start()\n {\n // Get all the buttons in the scene\n buttons = FindObjectsOfType<Button>();\n\n // Add event listeners for each button\n foreach (var button in buttons)\n {\n button.gameObject.AddComponent<EventTrigger>();\n var eventTrigger = button.GetComponent<EventTrigger>();\n\n // Add pointer enter event listener\n var pointerEnter = new EventTrigger.Entry();\n pointerEnter.eventID = EventTriggerType.PointerEnter;\n pointerEnter.callback.AddListener((data) => { OnButtonPointerEnter(button); });\n eventTrigger.triggers.Add(pointerEnter);\n\n // Add pointer exit event listener\n var pointerExit = new EventTrigger.Entry();\n pointerExit.eventID = EventTriggerType.PointerExit;\n pointerExit.callback.AddListener((data) => { OnButtonPointerExit(button); });\n eventTrigger.triggers.Add(pointerExit);\n }\n }\n\n private void OnButtonPointerEnter(Button button)\n {\n Debug.Log("Mouse Over: " + button.GetType().Name);\n }\n\n private void OnButtonPointerExit(Button button)\n {\n Debug.Log("Mouse Exit: " + button.GetType().Name);\n }\n}\n\n\nIn this script, we find all the buttons in the scene using FindObjectsOfType<Button>(). Then, we add an EventTrigger component to each button and add pointer enter and exit event listeners using EventTrigger.Entry. The event listeners call the OnButtonPointerEnter and OnButtonPointerExit methods, respectively, which log the class name of the button to the console.\n\nRemember to attach this script to a GameObject in your Unity scene for it to work.
原文地址: https://www.cveoy.top/t/topic/pAqQ 著作权归作者所有。请勿转载和采集!