Каждый щелчок запускается индивидуально, поэтому ваша локальная переменная eventData
будет сбрасываться при каждом запуске;это зависит от события.
Попробуйте создать глобальную переменную, которую вы можете увеличивать, а затем считывать из нее при каждом запуске события.
public class InventoryManager : MonoBehaviour {
int slotID = -1; //id of the previously clicked slot
public void OnPointerClick(PointerEventData eventData) {
if (this.slotID != selectedItem.id) {
this.slotID = selectedItem.id;
//your code for a single click
} else {
this.slotID = -1; //clear the slot id;
//your code for a double click
}
}
}
Теперь все еще остается проблема синхронизации: таким образом, она всегда будет запускатьсобытие одиночного щелчка, а затем событие двойного щелчка. Если вы хотите условно пропустить событие одиночного щелчка, вы можете подождать секунду, прежде чем инициировать событие одиночного щелчка. Надеемся, что событие одиночного щелчка не так много, поэтому вы можете настроить обработчик двойного щелчка, чтобы отменить действия обработчика одного щелчка.
Например, если элемент был выбран, и пользователь сразу же щелкает тот же слот во второй раз, вы можетепросто поместите предмет обратно в слот и выполните событие для двойного щелчка. Таймер, вероятно, не является обязательным, если можно отменить один клик.