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.
165 lines
5.5 KiB
165 lines
5.5 KiB
// This code is part of the Fungus library (http://fungusgames.com) maintained by Chris Gregan (http://twitter.com/gofungus). |
|
// It is released for free under the MIT open source license (https://github.com/snozbot/fungus/blob/master/LICENSE) |
|
|
|
using UnityEngine; |
|
using UnityEngine.UI; |
|
|
|
namespace Fungus |
|
{ |
|
/// <summary> |
|
/// Select which type of fade will be applied. |
|
/// </summary> |
|
public enum FadeMode |
|
{ |
|
/// <summary> Fade the alpha color component only. </summary> |
|
Alpha, |
|
/// <summary> Fade all color components (RGBA). </summary> |
|
Color |
|
} |
|
|
|
/// <summary> |
|
/// Fades a UI object. |
|
/// </summary> |
|
[CommandInfo("UI", |
|
"Fade UI", |
|
"Fades a UI object")] |
|
public class FadeUI : TweenUI |
|
{ |
|
[SerializeField] protected FadeMode fadeMode = FadeMode.Alpha; |
|
|
|
[SerializeField] protected ColorData targetColor = new ColorData(Color.white); |
|
|
|
[SerializeField] protected FloatData targetAlpha = new FloatData(1f); |
|
|
|
protected override void ApplyTween(GameObject go) |
|
{ |
|
var images = go.GetComponentsInChildren<Image>(); |
|
foreach (var image in images) |
|
{ |
|
if (Mathf.Approximately(duration, 0f)) |
|
{ |
|
switch (fadeMode) |
|
{ |
|
case FadeMode.Alpha: |
|
Color tempColor = image.color; |
|
tempColor.a = targetAlpha; |
|
image.color = tempColor; |
|
break; |
|
case FadeMode.Color: |
|
image.color = targetColor; |
|
break; |
|
} |
|
} |
|
else |
|
{ |
|
switch (fadeMode) |
|
{ |
|
case FadeMode.Alpha: |
|
LeanTween.alpha(image.rectTransform, targetAlpha, duration).setEase(tweenType).setEase(tweenType); |
|
break; |
|
case FadeMode.Color: |
|
LeanTween.color(image.rectTransform, targetColor, duration).setEase(tweenType).setEase(tweenType); |
|
break; |
|
} |
|
} |
|
} |
|
|
|
var texts = go.GetComponentsInChildren<Text>(); |
|
foreach (var text in texts) |
|
{ |
|
if (Mathf.Approximately(duration, 0f)) |
|
{ |
|
switch (fadeMode) |
|
{ |
|
case FadeMode.Alpha: |
|
Color tempColor = text.color; |
|
tempColor.a = targetAlpha; |
|
text.color = tempColor; |
|
break; |
|
case FadeMode.Color: |
|
text.color = targetColor; |
|
break; |
|
} |
|
} |
|
else |
|
{ |
|
switch (fadeMode) |
|
{ |
|
case FadeMode.Alpha: |
|
LeanTween.textAlpha(text.rectTransform, targetAlpha, duration).setEase(tweenType); |
|
break; |
|
case FadeMode.Color: |
|
LeanTween.textColor(text.rectTransform, targetColor, duration).setEase(tweenType); |
|
break; |
|
} |
|
} |
|
} |
|
|
|
var textMeshes = go.GetComponentsInChildren<TextMesh>(); |
|
foreach (var textMesh in textMeshes) |
|
{ |
|
if (Mathf.Approximately(duration, 0f)) |
|
{ |
|
switch (fadeMode) |
|
{ |
|
case FadeMode.Alpha: |
|
Color tempColor = textMesh.color; |
|
tempColor.a = targetAlpha; |
|
textMesh.color = tempColor; |
|
break; |
|
case FadeMode.Color: |
|
textMesh.color = targetColor; |
|
break; |
|
} |
|
} |
|
else |
|
{ |
|
switch (fadeMode) |
|
{ |
|
case FadeMode.Alpha: |
|
LeanTween.alpha(go, targetAlpha, duration).setEase(tweenType); |
|
break; |
|
case FadeMode.Color: |
|
LeanTween.color(go, targetColor, duration).setEase(tweenType); |
|
break; |
|
} |
|
} |
|
} |
|
} |
|
|
|
protected override string GetSummaryValue() |
|
{ |
|
if (fadeMode == FadeMode.Alpha) |
|
{ |
|
return targetAlpha.Value.ToString() + " alpha"; |
|
} |
|
else if (fadeMode == FadeMode.Color) |
|
{ |
|
return targetColor.Value.ToString() + " color"; |
|
} |
|
|
|
return ""; |
|
} |
|
|
|
#region Public members |
|
|
|
public override bool IsPropertyVisible(string propertyName) |
|
{ |
|
if (fadeMode == FadeMode.Alpha && |
|
propertyName == "targetColor") |
|
{ |
|
return false; |
|
} |
|
|
|
if (fadeMode == FadeMode.Color && |
|
propertyName == "targetAlpha") |
|
{ |
|
return false; |
|
} |
|
|
|
return true; |
|
} |
|
|
|
#endregion |
|
} |
|
}
|
|
|