PhysicsRaycaster是Unity UGUI中的一个组件,用于在UI元素上进行物理射线检测。它可以检测鼠标或触摸事件是否发生在UI元素上,并将事件传递给相应的UI元素。
PhysicsRaycaster通过发射一条射线来检测UI元素。当射线与UI元素相交时,PhysicsRaycaster会将事件传递给相应的UI元素。
using UnityEngine;using UnityEngine.EventSystems;using UnityEngine.UI;public class ButtonColorChanger : MonoBehaviour, IPointerClickHandler{ private Image image; private void Start() { image = GetComponent<Image>(); } public void OnPointerClick(PointerEventData eventData) { image.color = Random.ColorHSV(); }}
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class ButtonColorChanger : MonoBehaviour, IPointerClickHandler
{
private Image image;
private void Start()
image = GetComponent<Image>();
}
public void OnPointerClick(PointerEventData eventData)
image.color = Random.ColorHSV();
操作步骤:
注意事项:
using UnityEngine;using UnityEngine.EventSystems;public class ObjectDragger : MonoBehaviour, IPointerDownHandler, IDragHandler{ private RectTransform rectTransform; private void Start() { rectTransform = GetComponent<RectTransform>(); } public void OnPointerDown(PointerEventData eventData) { rectTransform.SetAsLastSibling(); } public void OnDrag(PointerEventData eventData) { rectTransform.anchoredPosition += eventData.delta; }}
public class ObjectDragger : MonoBehaviour, IPointerDownHandler, IDragHandler
private RectTransform rectTransform;
rectTransform = GetComponent<RectTransform>();
public void OnPointerDown(PointerEventData eventData)
rectTransform.SetAsLastSibling();
public void OnDrag(PointerEventData eventData)
rectTransform.anchoredPosition += eventData.delta;
using UnityEngine;using UnityEngine.EventSystems;using UnityEngine.UI;public class ButtonSoundPlayer : MonoBehaviour, IPointerClickHandler{ public AudioClip soundClip; private Button button; private AudioSource audioSource; private void Start() { button = GetComponent<Button>(); audioSource = GetComponent<AudioSource>(); audioSource.clip = soundClip; } public void OnPointerClick(PointerEventData eventData) { audioSource.Play(); }}
public class ButtonSoundPlayer : MonoBehaviour, IPointerClickHandler
public AudioClip soundClip;
private Button button;
private AudioSource audioSource;
button = GetComponent<Button>();
audioSource = GetComponent<AudioSource>();
audioSource.clip = soundClip;
audioSource.Play();
using UnityEngine;using UnityEngine.EventSystems;using UnityEngine.UI;public class ButtonObjectToggler : MonoBehaviour, IPointerClickHandler{ public GameObject targetObject; private Button button; private void Start() { button = GetComponent<Button>(); } public void OnPointerClick(PointerEventData eventData) { targetObject.SetActive(!targetObject.activeSelf); }}
public class ButtonObjectToggler : MonoBehaviour, IPointerClickHandler
public GameObject targetObject;
targetObject.SetActive(!targetObject.activeSelf);
using UnityEngine;using UnityEngine.EventSystems;using UnityEngine.SceneManagement;using UnityEngine.UI;public class ButtonSceneSwitcher : MonoBehaviour, IPointerClickHandler{ public string targetSceneName; private Button button; private void Start() { button = GetComponent<Button>(); } public void OnPointerClick(PointerEventData eventData) { SceneManager.LoadScene(targetSceneName); }}
using UnityEngine.SceneManagement;
public class ButtonSceneSwitcher : MonoBehaviour, IPointerClickHandler
public string targetSceneName;
SceneManager.LoadScene(targetSceneName);
__EOF__
原文链接:https://www.cnblogs.com/alianblank/p/17586869.html
本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728