आप नए यूआई के लिए इनपुट एपीआई का उपयोग नहीं करते हैं। आप ईवेंट के आधार पर यूआई घटनाओं की सदस्यता लेते हैं या इंटरफेस लागू करते हैं।
:
इन नए UI घटकों पर घटनाओं का पता लगाने के लिए उचित तरीके हैं। Image
, RawImage
और Text
घटक:
आवश्यक इंटरफ़ेस को कार्यान्वित करें और इसके फ़ंक्शन को ओवरराइड करें। नीचे दिया गया उदाहरण सबसे अधिक उपयोग की जाने वाली घटनाओं को लागू करता है।
using UnityEngine.EventSystems;
public class ClickDetector : MonoBehaviour, IPointerDownHandler, IPointerClickHandler,
IPointerUpHandler, IPointerExitHandler, IPointerEnterHandler,
IBeginDragHandler, IDragHandler, IEndDragHandler
{
public void OnBeginDrag(PointerEventData eventData)
{
Debug.Log("Drag Begin");
}
public void OnDrag(PointerEventData eventData)
{
Debug.Log("Dragging");
}
public void OnEndDrag(PointerEventData eventData)
{
Debug.Log("Drag Ended");
}
public void OnPointerClick(PointerEventData eventData)
{
Debug.Log("Clicked: " + eventData.pointerCurrentRaycast.gameObject.name);
}
public void OnPointerDown(PointerEventData eventData)
{
Debug.Log("Mouse Down: " + eventData.pointerCurrentRaycast.gameObject.name);
}
public void OnPointerEnter(PointerEventData eventData)
{
Debug.Log("Mouse Enter");
}
public void OnPointerExit(PointerEventData eventData)
{
Debug.Log("Mouse Exit");
}
public void OnPointerUp(PointerEventData eventData)
{
Debug.Log("Mouse Up");
}
}
। Button
घटक:
आप बटन क्लिक करने के लिए रजिस्टर करने के लिए घटनाओं का उपयोग करें:
public class ButtonClickDetector : MonoBehaviour
{
public Button button1;
public Button button2;
public Button button3;
void OnEnable()
{
//Register Button Events
button1.onClick.AddListener(() => buttonCallBack(button1));
button2.onClick.AddListener(() => buttonCallBack(button2));
button3.onClick.AddListener(() => buttonCallBack(button3));
}
private void buttonCallBack(Button buttonPressed)
{
if (buttonPressed == button1)
{
//Your code for button 1
Debug.Log("Clicked: " + button1.name);
}
if (buttonPressed == button2)
{
//Your code for button 2
Debug.Log("Clicked: " + button2.name);
}
if (buttonPressed == button3)
{
//Your code for button 3
Debug.Log("Clicked: " + button3.name);
}
}
void OnDisable()
{
//Un-Register Button Events
button1.onClick.RemoveAllListeners();
button2.onClick.RemoveAllListeners();
button3.onClick.RemoveAllListeners();
}
}
आप बटन पर बटन पर क्लिक करें के अलावा कुछ पता लगा पाए हैं तो विधि 1. का उपयोग उदाहरण के लिए, तो बटन नीचे और नहीं बटन क्लिक करें, IPointerDownHandler
का उपयोग करें और इसकी OnPointerDown
विधि 1 से कार्य करें।
। InputField
घटक:
आप प्रस्तुत InputField के लिए रजिस्टर करने के लिए रजिस्टर करने के लिए घटनाओं का उपयोग करें:
public InputField inputField;
void OnEnable()
{
//Register InputField Events
inputField.onEndEdit.AddListener(delegate { inputEndEdit(); });
inputField.onValueChanged.AddListener(delegate { inputValueChanged(); });
}
//Called when Input is submitted
private void inputEndEdit()
{
Debug.Log("Input Submitted");
}
//Called when Input changes
private void inputValueChanged()
{
Debug.Log("Input Changed");
}
void OnDisable()
{
//Un-Register InputField Events
inputField.onEndEdit.RemoveAllListeners();
inputField.onValueChanged.RemoveAllListeners();
}
। Slider
घटक: जब स्लाइडर मूल्य खींचें दौरान परिवर्तन
का पता लगाने के लिए:
public Slider slider;
void OnEnable()
{
//Subscribe to the Slider Click event
slider.onValueChanged.AddListener(delegate { sliderCallBack(slider.value); });
}
//Will be called when Slider changes
void sliderCallBack(float value)
{
Debug.Log("Slider Changed: " + value);
}
void OnDisable()
{
//Un-Subscribe To Slider Event
slider.onValueChanged.RemoveListener(delegate { sliderCallBack(slider.value); });
}
अन्य घटनाओं के लिए, का उपयोग विधि 1।
।Dropdown
घटक
public Dropdown dropdown;
void OnEnable()
{
//Register to onValueChanged Events
//Callback with parameter
dropdown.onValueChanged.AddListener(delegate { callBack(); });
//Callback without parameter
dropdown.onValueChanged.AddListener(callBackWithParameter);
}
void OnDisable()
{
//Un-Register from onValueChanged Events
dropdown.onValueChanged.RemoveAllListeners();
}
void callBack()
{
}
void callBackWithParameter(int value)
{
}
कोई नहीं यूआई OBJECTS:
.For 3 डी ऑब्जेक्ट (मेष रेंडरर/किसी भी 3 डी कोलाइडर)
कैमरा करने के लिए PhysicsRaycaster
जोड़े तो किसी का उपयोग विधि 1 से घटनाओं का।
नीचे दिया गया कोड स्वचालित रूप से PhysicsRaycaster
को मुख्य Camera
पर जोड़ देगा।
public class MeshDetector : MonoBehaviour, IPointerDownHandler
{
void Start()
{
addPhysicsRaycaster();
}
void addPhysicsRaycaster()
{
PhysicsRaycaster physicsRaycaster = GameObject.FindObjectOfType<PhysicsRaycaster>();
if (physicsRaycaster == null)
{
Camera.main.gameObject.AddComponent<PhysicsRaycaster>();
}
}
public void OnPointerDown(PointerEventData eventData)
{
Debug.Log("Clicked: " + eventData.pointerCurrentRaycast.gameObject.name);
}
//Implement Other Events from Method 1
}
.For 2 डी वस्तु (स्प्राइट रेंडरर/किसी भी 2 डी कोलाइडर)
कैमरा करने के लिए Physics2DRaycaster
जोड़े तो विधि 1 से घटनाओं के किसी भी उपयोग करें।
नीचे दिया गया कोड स्वचालित रूप से Physics2DRaycaster
को मुख्य Camera
पर जोड़ देगा।
public class SpriteDetector : MonoBehaviour, IPointerDownHandler
{
void Start()
{
addPhysics2DRaycaster();
}
void addPhysics2DRaycaster()
{
Physics2DRaycaster physicsRaycaster = GameObject.FindObjectOfType<Physics2DRaycaster>();
if (physicsRaycaster == null)
{
Camera.main.gameObject.AddComponent<Physics2DRaycaster>();
}
}
public void OnPointerDown(PointerEventData eventData)
{
Debug.Log("Clicked: " + eventData.pointerCurrentRaycast.gameObject.name);
}
//Implement Other Events from Method 1
}
हाय @ प्रोग्रामर। यदि मैं इनपुट एपीआई का उपयोग नहीं करता हूं तो मोबाइल उपयोग स्पर्श के बाद से मोबाइल में यह कैसा चल रहा है? धन्यवाद –
यूआई एपीआई मोबाइल और डेस्कटॉप दोनों पर काम करने के लिए है। यह इसका अच्छा पक्ष है और यह बिल्कुल कोई मुद्दा नहीं है। मैं इसे एक पल में अन्य 3 डी (मेष रेंडरर/कोलाइडर) और 2 डी (स्प्राइट/2 डी कोलाइडर) शामिल करने के लिए अपडेट करूंगा। – Programmer
सार्वजनिक शून्य ऑनपोइंटरक्लिक (पॉइंटरएवेंटडाटा इवेंटडाटा) तो यह काम मोबाइल स्पर्श है? मुझे इसका एहसास नहीं है क्योंकि मैं इसका भी उपयोग कर रहा हूं। हाहा .. –