◆使い方
①CanvasGroupと一緒にアタッチ
②任意のタイミングでSetActive(),SetInactive()を呼ぶ
CanvasGroupCtr.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class CanvasGroupCtr : MonoBehaviour
{
private CanvasGroup thisCanvasGroup;
private CanvasGroup canvasGroup {
get {
if (thisCanvasGroup == null) {
thisCanvasGroup = GetComponent<CanvasGroup> ();
}
return thisCanvasGroup;
}
}
//表示する
public void ShowWithFade (bool isFade = true, float FadeSpeed = 5f)
{
//FadeInさせるかどうか
if (isFade) {
StartCoroutine (TimeForFadeIn (FadeSpeed));
} else {
canvasGroup.alpha = 1;
}
canvasGroup.interactable = true;
canvasGroup.blocksRaycasts = true;
}
//非表示にする
public void HideWithFade (bool isFade = true, float FadeSpeed = 5f)
{
//FadeOutさせるかどうか
if (isFade) {
StartCoroutine (TimeForFadeOut (FadeSpeed));
} else {
canvasGroup.alpha = 0;
}
canvasGroup.interactable = false;
canvasGroup.blocksRaycasts = false;
}
//FadeIn用コルーチン
IEnumerator TimeForFadeIn (float FadeSpeed)
{
while (canvasGroup.alpha < 1) {
canvasGroup.alpha += Time.deltaTime * FadeSpeed;
yield return null;
}
yield return null;
}
//FadeOut用コルーチン
IEnumerator TimeForFadeOut (float FadeSpeed)
{
while (canvasGroup.alpha > 0) {
canvasGroup.alpha -= Time.deltaTime * FadeSpeed;
yield return null;
}
yield return null;
}
}