55 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			55 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | namespace SRF.UI | |||
|  | { | |||
|  |     using Internal; | |||
|  |     using UnityEngine; | |||
|  |     using UnityEngine.EventSystems; | |||
|  |     using UnityEngine.UI; | |||
|  | 
 | |||
|  |     /// <summary> | |||
|  |     /// Instantly sets colour to FlashColor on pointer down, then fades back to DefaultColour once pointer is released. | |||
|  |     /// </summary> | |||
|  |     [AddComponentMenu(ComponentMenuPaths.FlashGraphic)] | |||
|  |     [ExecuteInEditMode] | |||
|  |     public class FlashGraphic : UIBehaviour, IPointerDownHandler, IPointerUpHandler | |||
|  |     { | |||
|  |         public float DecayTime = 0.15f; | |||
|  |         public Color DefaultColor = new Color(1, 1, 1, 0); | |||
|  |         public Color FlashColor = Color.white; | |||
|  |         public Graphic Target; | |||
|  | 
 | |||
|  |         public void OnPointerDown(PointerEventData eventData) | |||
|  |         { | |||
|  |             Target.CrossFadeColor(FlashColor, 0f, true, true); | |||
|  |         } | |||
|  | 
 | |||
|  |         public void OnPointerUp(PointerEventData eventData) | |||
|  |         { | |||
|  |             Target.CrossFadeColor(DefaultColor, DecayTime, true, true); | |||
|  |         } | |||
|  | 
 | |||
|  |         protected override void OnEnable() | |||
|  |         { | |||
|  |             base.OnEnable(); | |||
|  |             Target.CrossFadeColor(DefaultColor, 0f, true, true); | |||
|  |         } | |||
|  | 
 | |||
|  |         protected void Update() | |||
|  |         { | |||
|  | #if UNITY_EDITOR | |||
|  | 
 | |||
|  |             if (!Application.isPlaying && Target != null) | |||
|  |             { | |||
|  |                 Target.CrossFadeColor(DefaultColor, 0, true, true); | |||
|  |             } | |||
|  | 
 | |||
|  | #endif | |||
|  |         } | |||
|  | 
 | |||
|  |         public void Flash() | |||
|  |         { | |||
|  |             Target.CrossFadeColor(FlashColor, 0f, true, true); | |||
|  |             Target.CrossFadeColor(DefaultColor, DecayTime, true, true); | |||
|  |         } | |||
|  |     } | |||
|  | } |