- Home /
EventSystems throws an error (Missing reference)
Hi, I have a problem. I have Unity 5.1.1 and when I am trying to have "using UnityEngine.EventSystems" the reference is missing. I am trying to use it to get the object being dropped on ondrop function. I couldn't find a lot of info about this issue. Does anyone know how to fix that? Here is the code:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class Slot : MonoBehaviour {
public int slotIndex;
public Image icon;
// Use this for initialization
void Start () {
icon=this.gameObject.GetComponent<Image>();
}
// Update is called once per frame
void Update () {
if(Control.programSlots[slotIndex]==ProgramRunner.forLoop)
{
icon.color=Color.blue;
}
if(Control.programSlots[slotIndex]==ProgramRunner.moveBack)
{
icon.color=Color.red;
}
if(Control.programSlots[slotIndex]==ProgramRunner.moveForward)
{
icon.color=Color.yellow;
}
if(Control.programSlots[slotIndex]==ProgramRunner.moveLeft)
{
icon.color=Color.black;
}
if(Control.programSlots[slotIndex]==ProgramRunner.moveRight)
{
icon.color=Color.green;
}
if(Control.programSlots[slotIndex]==ProgramRunner.blankAction)
{
icon.color=Color.white;
}
}
public void OnDrop(EventSystems.PointerEventData data)
{
Control.programSlots[slotIndex]=Control.selectedCard.action;
Control.requestSlots[slotIndex]=Control.selectedCard.req;
}
}
And here is the error: Assets/Slot.cs(41,28): error CS0246: The type or namespace name `EventSystems' could not be found. Are you missing a using directive or an assembly reference?
Help Please!
Answer by DoTA_KAMIKADzE · Jul 13, 2015 at 12:25 AM
You're already using EventSystems, so just change your line#41 to this:
public void OnDrop(PointerEventData data)
or if you wish so:
public void OnDrop(UnityEngine.EventSystems.PointerEventData data)
The problem is that it does not show the method in a trigger event with any of these solutions. What I want to do is to get an object that was dropped onto the element. I register drop using trigger event component, but I can not select OnDrop from the list of functions available when I try any of these solutions.
And how you expect me to tell you what you need to do, if I have no idea how you configured EventSystem, what you do with your UI, what is your Control class and how it works, and why you want to "select OnDrop from the other script"(if I got you right) in the first place?
You've asked firstly how to fix the error, the answer is exactly it. Now one more thing I can tell you - in order for OnDrop to properly function you'd also need to add IDropHandler interface, e.g. line#5 to this:
public class Slot : $$anonymous$$onoBehaviour, IDropHandler {
If you want any further assistance you should describe a bit better what exactly you have and how you expect it to work, as so far I only got that you want to drop 1 UI element on some other and it should somehow work with your proprietary script that you haven't shown. You can either update your question with more info, or even better - post a new question.
P.S. You can also find out how to work with UI's drag&drop in Unity's UI examples.
Thank you. Your hint about IDropHandler actually helped, I was using the system in a wrong way.