TO SQUASH: Shark notifications.
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
using UnityEngine;
|
||||
using System.Collections;
|
||||
|
||||
public class NotifierBase : MonoBehaviour
|
||||
{
|
||||
|
||||
public Canvas canvas;
|
||||
|
||||
public GameObject notificationPrefab;
|
||||
|
||||
protected GameObject notificationInstance;
|
||||
|
||||
|
||||
protected void ShowNotification(string text)
|
||||
{
|
||||
if (notificationPrefab == null || canvas == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
notificationInstance = Instantiate(notificationPrefab);
|
||||
notificationInstance.transform.SetParent(canvas.transform, false);
|
||||
notificationInstance.transform.localScale = Vector3.one;
|
||||
|
||||
var notificationRect = notificationInstance.GetComponent<RectTransform>();
|
||||
var canvasRect = canvas.GetComponent<RectTransform>();
|
||||
var label = notificationInstance.GetComponent<UnityEngine.UI.Text>();
|
||||
|
||||
if (label != null)
|
||||
{
|
||||
label.text = text;
|
||||
}
|
||||
|
||||
if (notificationRect != null && canvasRect != null)
|
||||
{
|
||||
Camera worldCamera = canvas.worldCamera != null ? canvas.worldCamera : Camera.main;
|
||||
Camera uiCamera = canvas.renderMode == RenderMode.ScreenSpaceOverlay ? null : worldCamera;
|
||||
|
||||
if (worldCamera != null)
|
||||
{
|
||||
Vector2 screenPoint = worldCamera.WorldToScreenPoint(transform.position);
|
||||
|
||||
if (RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRect, screenPoint, uiCamera, out Vector2 localPoint))
|
||||
{
|
||||
notificationRect.anchoredPosition = localPoint;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StartCoroutine(HideNotification());
|
||||
}
|
||||
|
||||
protected IEnumerator HideNotification()
|
||||
{
|
||||
yield return new WaitForSeconds(1.5f);
|
||||
|
||||
if (notificationInstance != null)
|
||||
{
|
||||
Destroy(notificationInstance);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user