1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Unity FadeCamera2のUIトランジションの不具合修正

Last updated at Posted at 2021-08-09

概要

テラシュールブログ様 FadeCamera2はUnityのトランジションを行う非常に有用なパッケージですが、gitの最終コミットから5年が経ち2021年現在のUnityでUIトランジションを行う際の不具合に遭遇したので備忘録的に書き残しておきます。

動作確認した環境

Editor and Build結果確認: Windows10
Unity 2019.4.7f1

遭遇した不具合

FadeMaskを使用したUIのみのトランジションの際にTextureの変更が適応されない
マスクイメージのアニメーションをすっ飛ばして表示される

解決策

シェーダの_MaskTexSetTextureで直接テクスチャを置く
テクスチャをレンダーテクスチャにコピーする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;
    }
}
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?