88 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			88 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | namespace SRF.UI | |||
|  | { | |||
|  |     using System; | |||
|  |     using Internal; | |||
|  |     using UnityEngine; | |||
|  |     using UnityEngine.UI; | |||
|  | 
 | |||
|  |     [ExecuteInEditMode] | |||
|  |     [RequireComponent(typeof(RectTransform))] | |||
|  |     [AddComponentMenu(ComponentMenuPaths.ScrollToBottom)] | |||
|  |     public class ScrollToBottomBehaviour : MonoBehaviour | |||
|  |     { | |||
|  | #pragma warning disable 649 | |||
|  |         [SerializeField] | |||
|  |         private ScrollRect _scrollRect; | |||
|  | 
 | |||
|  |         [SerializeField] | |||
|  |         private CanvasGroup _canvasGroup; | |||
|  | #pragma warning restore 649 | |||
|  | 
 | |||
|  |         public void Start() | |||
|  |         { | |||
|  |             if (_scrollRect == null) | |||
|  |             { | |||
|  |                 Debug.LogError("[ScrollToBottomBehaviour] ScrollRect not set"); | |||
|  |                 return; | |||
|  |             } | |||
|  | 
 | |||
|  |             if (_canvasGroup == null) | |||
|  |             { | |||
|  |                 Debug.LogError("[ScrollToBottomBehaviour] CanvasGroup not set"); | |||
|  |                 return; | |||
|  |             } | |||
|  |              | |||
|  |             _scrollRect.onValueChanged.AddListener(OnScrollRectValueChanged); | |||
|  |             Refresh(); | |||
|  |         } | |||
|  | 
 | |||
|  |         void OnEnable() | |||
|  |         { | |||
|  |             Refresh(); | |||
|  |         } | |||
|  | 
 | |||
|  |         public void Trigger() | |||
|  |         { | |||
|  |             _scrollRect.normalizedPosition = new Vector2(0, 0); | |||
|  |         } | |||
|  | 
 | |||
|  |         private void OnScrollRectValueChanged(Vector2 position) | |||
|  |         { | |||
|  |             Refresh(); | |||
|  |         } | |||
|  | 
 | |||
|  |         private void Refresh() | |||
|  |         { | |||
|  |             if (_scrollRect == null) | |||
|  |                 return; | |||
|  | 
 | |||
|  |             var position = _scrollRect.normalizedPosition; | |||
|  | 
 | |||
|  |             if (position.y < 0.001f) | |||
|  |             { | |||
|  |                 SetVisible(false); | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 SetVisible(true); | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         void SetVisible(bool truth) | |||
|  |         { | |||
|  |             if (truth) | |||
|  |             { | |||
|  |                 _canvasGroup.alpha = 1f; | |||
|  |                 _canvasGroup.interactable = true; | |||
|  |                 _canvasGroup.blocksRaycasts = true; | |||
|  |             } | |||
|  |             else | |||
|  |             { | |||
|  |                 _canvasGroup.alpha = 0f; | |||
|  |                 _canvasGroup.interactable = false; | |||
|  |                 _canvasGroup.blocksRaycasts = false; | |||
|  |             } | |||
|  |         } | |||
|  |     } | |||
|  | } |