概要
テラシュールブログ様 FadeCamera2はUnityのトランジションを行う非常に有用なパッケージですが、gitの最終コミットから5年が経ち2021年現在のUnityでUIトランジションを行う際の不具合に遭遇したので備忘録的に書き残しておきます。
動作確認した環境
Editor and Build結果確認: Windows10
Unity 2019.4.7f1
遭遇した不具合
FadeMaskを使用したUIのみのトランジションの際にTextureの変更が適応されない
マスクイメージのアニメーションをすっ飛ばして表示される
解決策
シェーダの_MaskTex
にSetTexture
で直接テクスチャを置く
テクスチャをレンダーテクスチャにコピーするGraphics.Blit(src, dest, mat)
が上手くMaskテクスチャを送れていないため、画面の表示をレンダーテクスチャにBlitするようにする
FadeUI.cs全文
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
[RequireComponent (typeof(RawImage))]
[RequireComponent (typeof(Mask))]
public class FadeUI : MonoBehaviour, IFade
{
[SerializeField, Range (0, 1)]
private float cutoutRange;
public float Range {
get {
return cutoutRange;
}
set {
cutoutRange = value;
UpdateMaskCutout (cutoutRange);
}
}
[SerializeField] Material mat = null;
[SerializeField] RenderTexture rt = null;
[SerializeField] Texture texture = null;
protected void Start()
{
// 追加
mat.SetTexture("_MaskTex", texture);
}
private void UpdateMaskCutout (float range)
{
mat.SetFloat ("_Range", range);
// 追加
// 画面の表示をレンダーテクスチャにBlitする場合source = null
Graphics.Blit (null, rt, mat);
// コメントアウト
// Graphics.Blit(texture, rt, mat);
var mask = GetComponent<Mask> ();
mask.enabled = false;
mask.enabled = true;
}
}