【Unity】テラシュールさんのuGUI対応トランジションがうまく動かず、某めるくまさんが解決方法考えてくれたので、自分の手柄としてブログにかいときますね!
おはようございます。坂内っす。
残寒の候、皆様風邪など召されずにお過ごしでしょうか。
現在Unity5.5をメインで使用してまして、画面遷移時のトランジションをいれようと悪戦苦闘しておりました。
使用しようと思っていたのはこちら。
【テラシュールブログ】Unityでトランジションを使用した綺麗な場面転換(uGUI対応版)
http://tsubakit1.hateblo.jp/entry/2015/11/04/015355
これこれ。
以前も触ってみようとしてあきらめたやつね。
トランジションといえば、【Easy Masking Transition】 というアセットもあるんですが、こちらは持っているものの、画面全体のトランジションしかできないため、一部UIのトランジションはできないんですよね。
https://www.assetstore.unity3d.com/jp/#!/content/8734
しかし、テラシュールさんのブログから落とせるFade Cameraを落としてみても動かない・・・・・
”普通のトランジション設定”という方は動くのですが、uGUIをトランジションしようとしても動かない・・・
ってことで、某めるくまさんとこんなやり取りをし、めるくまさんが動く方法を教えてくれたので、ここに書いときます!

ってことで、結局どうしたの?ってのは↓を参考に。
FadeUI.cs
こうなりました。
使い方はテラシュールさんのページを見てもらえばわかりますが、FadeMaskオブジェクトをCanvasの下に置き、その下にトランジションしたいオブジェクトを置きます。
例として、白い四角Imageを置いてみます。

次にFadeUIのMat、Textureにルール画像と呼ばれるテクスチャを付けます。
こちらも詳しい話はテラシュールさんのブログみてね!

これでオッケー!
これでFadeUIのCutout Rangeの値をいじるだけで、FadeMask下のオブジェクトにトランジションがかかります。
※クリックして動きみれるよ!

こんな感じでいい感じのトランジションが使えます!
是非お使いください!
では、あでゅ~ノシ
残寒の候、皆様風邪など召されずにお過ごしでしょうか。
現在Unity5.5をメインで使用してまして、画面遷移時のトランジションをいれようと悪戦苦闘しておりました。
使用しようと思っていたのはこちら。
【テラシュールブログ】Unityでトランジションを使用した綺麗な場面転換(uGUI対応版)
http://tsubakit1.hateblo.jp/entry/2015/11/04/015355
これこれ。
以前も触ってみようとしてあきらめたやつね。
トランジションといえば、【Easy Masking Transition】 というアセットもあるんですが、こちらは持っているものの、画面全体のトランジションしかできないため、一部UIのトランジションはできないんですよね。
https://www.assetstore.unity3d.com/jp/#!/content/8734
しかし、テラシュールさんのブログから落とせるFade Cameraを落としてみても動かない・・・・・
”普通のトランジション設定”という方は動くのですが、uGUIをトランジションしようとしても動かない・・・
ってことで、某めるくまさんとこんなやり取りをし、めるくまさんが動く方法を教えてくれたので、ここに書いときます!

ってことで、結局どうしたの?ってのは↓を参考に。
FadeUI.cs
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
[RequireComponent (typeof(RawImage))]
[RequireComponent (typeof(Mask))]
public class FadeUI : UnityEngine.UI.Graphic, IFade
{
[SerializeField]
private Texture maskTexture = null;
[SerializeField, Range (0,1)]
private float cutoutRange;
protected override void Start() {
base.Start();
UpdateMaskTexture(maskTexture);
}
public void UpdateMaskTexture(Texture texture) {
material.SetTexture("_MaskTex",texture);
material.SetColor("_Color",color);
}
public float Range {
get {
return cutoutRange;
}
set {
cutoutRange = value;
UpdateMaskCutout (cutoutRange);
}
}
[SerializeField] Material mat = null;
[SerializeField] RenderTexture rt = null;
[SerializeField] Texture texture = null;
private void UpdateMaskCutout (float range)
{
mat.SetFloat ("_Range", range);
UnityEngine.Graphics.Blit (texture, rt, mat);
var mask = GetComponent<Mask> ();
mask.enabled = false;
mask.enabled = true;
}
#if UNITY_EDITOR
protected override void OnValidate() {
base.OnValidate();
UpdateMaskCutout(Range);
UpdateMaskTexture(maskTexture);
}
#endif
}
こうなりました。
使い方はテラシュールさんのページを見てもらえばわかりますが、FadeMaskオブジェクトをCanvasの下に置き、その下にトランジションしたいオブジェクトを置きます。
例として、白い四角Imageを置いてみます。

次にFadeUIのMat、Textureにルール画像と呼ばれるテクスチャを付けます。
こちらも詳しい話はテラシュールさんのブログみてね!

これでオッケー!
これでFadeUIのCutout Rangeの値をいじるだけで、FadeMask下のオブジェクトにトランジションがかかります。
※クリックして動きみれるよ!

こんな感じでいい感じのトランジションが使えます!
是非お使いください!
では、あでゅ~ノシ
Category: 開発日記(Unity)
« 【Unity】uGUIでマウスカーソルの位置にオブジェクトがあるか確認したかったよ | 【Unity】オブジェクトを曲線で動かしたかったよ。DoTween使うと簡単なんすね。 »
コメント
同じく動かなくて困っておりましたので、こちらの記事で解決できました!
ただエディター上では動くのですが、ビルドすると動きません…
昔の記事で恐縮ですが、もし何かご存じでしたら教えていただきたいです。
#- | URL | 2020/04/17 11:38 [edit]
| h o m e |