Shifting inventory with drag-and-drop

This script allow for inventory shift left/right buttons to work while the mouse is drag-and-dropping inventory items. This only works with Unity UI-based Inventory Menus. To use it, attach the script file to your UI Button(s) and update the prefab.

/* *    *      Adventure  Creator *      by   Chris   Burton,   2013 -2017 *        *      " DragDropInventoryButton . cs " *     *      This   script   can   let   Unity   UI   Buttons   be   invoked   when   the   cursor   is   held   over   it,   with   a   drag - and - drop   inventory   item   selected ,   after   a   set   time. *      It   is   useful   for   shift   left / right   buttons   in   your   Unity   UI,   so   that   you   can   scroll   inventory   items   when   one   is   selected. *      ' Drag   and   drop   inventory ? '   must   be   checked   in   the   Settings   Manager. *      To   use   it,   attach   it   to   your   Unity   UI   Button. *     */  using  System ; using  UnityEngine ; using  UnityEngine. EventSystems ; using  AC ; public   class   DragDropInventoryButton   :   MonoBehaviour,   IPointerEnterHandler ,   IPointerExitHandler {     [ SerializeField ]   private  UnityEngine. UI. Button   uiButton ; [ SerializeField ]   private   float   totalHoldTime   =   0.4f ; private   bool   isOver   =   false ; private   float   currentHold ; private   void   Awake {         if   ( uiButton   ==   null ) {             uiButton   =   GetComponent   < UnityEngine. UI. Button > ; }     }      public   void   OnPointerEnter   ( PointerEventData   eventData ) {         if   ( ! isOver   &&   uiButton  ! =   null   &&  AC . KickStarter . playerInput . GetDragState      ==   DragState . Inventory ) {             StartWait    ; }     }      public   void   OnPointerExit   ( PointerEventData   eventData ) {         isOver   =   false ; }     private   void   Update {         if   ( isOver ) {             if   ( KickStarter . playerInput . GetMouseState     ! =   MouseState . HeldDown ) {                 isOver   =   false ; }             if   ( currentHold   >   0f ) {                 currentHold   -=   Time. deltaTime ; if   ( currentHold   < =   0f ) {                     uiButton. onClick. Invoke   ; StartWait   ; }             }          }      }      private   void   StartWait {         isOver   =   true ; currentHold   =   totalHoldTime ; } }