Unity 2019.4.9f1(64bit)を使用
ButtonのOnClick()実行時にフェードインアウトのコルーチンを実行し
実行終了後にシーン移動するつもりのプログラムなのですが
シーン移行はできるのにフェードインアウトが実行されません。
(インスペクタ上でFadeCanvasのスライダーをいじるとちゃんと表示されます)
フェードインアウトのコードはこちらのFaceCamera2を使用しています。
Fade.cs
C#
1public class Fade : MonoBehaviour 2{ 3 IFade fade; 4 5 void Start () 6 { 7 Init (); 8 fade.Range = cutoutRange; 9 } 10 11 float cutoutRange; 12 13 void Init () 14 { 15 fade = GetComponent<IFade> (); 16 } 17 18 void OnValidate () 19 { 20 Init (); 21 fade.Range = cutoutRange; 22 } 23 24 IEnumerator FadeoutCoroutine (float time, System.Action action) 25 { 26 float endTime = Time.timeSinceLevelLoad + time * (cutoutRange); 27 28 var endFrame = new WaitForEndOfFrame (); 29 30 while (Time.timeSinceLevelLoad <= endTime) { 31 cutoutRange = (endTime - Time.timeSinceLevelLoad) / time; 32 fade.Range = cutoutRange; 33 yield return endFrame; 34 } 35 cutoutRange = 0; 36 fade.Range = cutoutRange; 37 38 if (action != null) { 39 action (); 40 } 41 } 42 43 IEnumerator FadeinCoroutine (float time, System.Action action) 44 { 45 float endTime = Time.timeSinceLevelLoad + time * (1 - cutoutRange); 46 47 var endFrame = new WaitForEndOfFrame (); 48 49 while (Time.timeSinceLevelLoad <= endTime) { 50 cutoutRange = 1 - ((endTime - Time.timeSinceLevelLoad) / time); 51 fade.Range = cutoutRange; 52 yield return endFrame; 53 } 54 cutoutRange = 1; 55 fade.Range = cutoutRange; 56 57 if (action != null) { 58 action (); 59 } 60 } 61 62 public Coroutine FadeOut (float time, System.Action action) 63 { 64 StopAllCoroutines (); 65 return StartCoroutine (FadeoutCoroutine (time, action)); 66 } 67 68 public Coroutine FadeOut (float time) 69 { 70 return FadeOut (time, null); 71 } 72 73 public Coroutine FadeIn (float time, System.Action action) 74 { 75 StopAllCoroutines (); 76 return StartCoroutine (FadeinCoroutine (time, action)); 77 } 78 79 public Coroutine FadeIn (float time) 80 { 81 return FadeIn (time, null); 82 } 83}
フェードイン実行用スクリプトFadeCtrl.csとボタンアクション用スクリプトUIAction.csを
同じGameObjectにアタッチして実行しています。
FadeCtrl.cs
C#
1 [SerializeField] Fade fade; 2 public void doFade(float t) 3 { 4 //fade.FadeIn(t, () => { fade.FadeOut(t); }); 5 fade.FadeIn(t, () => Debug.Log("EndFadeIn")); 6 fade.FadeOut(t, () => Debug.Log("EndFadeOut")); 7 }
UIAction.cs
C#
1 static FadeCtrl fade; 2 //シーンを移動 3 public static void gotoScene(Scenes s) 4 { 5 fade.doFade(1f); 6 SceneManager.LoadScene(SceneName[(int)s]); 7 } 8 public void OnClickTitleStart() 9 { 10 gotoScene(Scenes.Setting); 11 } 12 void Start() 13 { 14 fade = GetComponent<FadeCtrl>(); 15 }
ボタンを押すとシーン移動はするのですがフェードインもDebug.Logも出力されません。
FadeCanvasを最前面に移動したのですが変わりませんでした。
なぜ実行されないのか、どう直せばいいかもわかりません。
わかる方アドバイスをお願いします。
回答1件
あなたの回答
tips
プレビュー