You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

130 lines
3.8 KiB

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
namespace EnhancedScrollerDemos.SnappingDemo
{
/// <summary>
/// This class displays a popup panel when the user wins some credits
/// </summary>
public class PlayWin : MonoBehaviour
{
/// <summary>
/// Cached transform to speed up processing
/// </summary>
private Transform _transform;
/// <summary>
/// The amount of time left before moving to the next state
/// </summary>
private float _timeLeft;
/// <summary>
/// This is the UI text element to show the score
/// </summary>
public Text scoreText;
/// <summary>
/// The amount of time to zoom in
/// </summary>
public float zoomTime;
/// <summary>
/// The amount of time to hold in place
/// </summary>
public float holdTime;
/// <summary>
/// The amount of time to disappear
/// </summary>
public float unZoomTime;
void Awake()
{
// cache the transform and hide the panel
_transform = transform;
_transform.localScale = Vector3.zero;
}
/// <summary>
/// This function intiates the playing of the panel
/// </summary>
/// <param name="score"></param>
public void Play(int score)
{
// set the score text
scoreText.text = string.Format("{0:n0}", score);
// hide the panel to start
transform.localScale = Vector3.zero;
// reset the timer to the zoom time and start the play zoom
_timeLeft = zoomTime;
StartCoroutine(PlayZoom());
}
/// <summary>
/// This function makes the panel larger over time
/// </summary>
/// <returns></returns>
IEnumerator PlayZoom()
{
while (_timeLeft > 0)
{
// decrement the timer
_timeLeft -= Time.deltaTime;
// set the scale of the transform between hidden and showing based on the amount of time left
_transform.localScale = Vector3.Lerp(Vector3.zero, Vector3.one, (zoomTime - _timeLeft) / zoomTime);
yield return null;
}
// set the transform to full showing (in case our Lerp didn't quite finish at 1)
transform.localScale = Vector3.one;
// reset the timer to the hold time and play the hold
_timeLeft = holdTime;
StartCoroutine(PlayHold());
}
/// <summary>
/// This function waits for a set amount of time
/// </summary>
/// <returns></returns>
IEnumerator PlayHold()
{
while (_timeLeft > 0)
{
// decrement the timer
_timeLeft -= Time.deltaTime;
yield return null;
}
// reset the timer to the unzoom time and play the unzoom
_timeLeft = unZoomTime;
StartCoroutine(PlayUnZoom());
}
/// <summary>
/// This function hides the panel over time
/// </summary>
/// <returns></returns>
IEnumerator PlayUnZoom()
{
while (_timeLeft > 0)
{
// decrement the timer
_timeLeft -= Time.deltaTime;
// set the scale of the transform between showing and hidden based on the amount of time left
_transform.localScale = Vector3.Lerp(Vector3.one, Vector3.zero, (unZoomTime - _timeLeft) / unZoomTime);
yield return null;
}
// set the transform to full hidden (in case our Lerp didn't quite finish at 0)
transform.localScale = Vector3.zero;
}
}
}