Unityのバージョンアップを行ったら、FadeIn,FadeOutが使えなくなった

691 views
Skip to first unread message

ムー

unread,
Sep 8, 2021, 5:12:19 AM9/8/21
to 宴ユーザーグループ
宴のバージョン:3.7.6
unityのバージョン:Unity2020.3.14
バージョンアップ前のバージョン:Unity2019.2.17

お世話になっております。
タイトル通りなのですが、Unityのバージョンアップを行ったら、FadeIn,FadeOutが使えなくなってしまいました。
調べた感じですとFadeIn,FadeOutだけ動いていないように感じます。
宴のバージョンが関係しているのでしょうか?
できれば宴のバージョンアップをせずに対応が出来たらと考えております。

お手数ではございますが、何卒ご教授いただけますと幸いです。

マッドネスラボ

unread,
Sep 8, 2021, 8:49:14 AM9/8/21
to 宴ユーザーグループ
古いバージョンなので、Unity2020.3で動くかがちょっとわからないですが、
FadeIn,FadeOutだけ動いていないのであれば、描画パイプラインをURPやHDPなど特殊なものに変えたということはあるでしょうか?
もし、そうなららそれはUnityのバージョンによらず、現在の宴では対応してないです。
FadeIn、FadeOutのほか、ImageEffectなどカメラにかかるエフェクトがすべて使えなくなります。
今のところは、Bult-Inというデフォルトの描画パイプラインのみ対応しています。


2021年9月8日水曜日 18:12:19 UTC+9 kikuok...@gmail.com:

ムー

unread,
Sep 9, 2021, 9:41:17 PM9/9/21
to 宴ユーザーグループ
大変申し訳ございません。返信が遅くなりました。
URPだと FadeIn、FadeOutが使えなくなる事承知いたしました。
ご教授いただきありがとうございます。

URPでFadeIn、FadeOutのような演出は使う場合、カスタムコマンドなどで作成する必要があるでしょうか?
UPRを使用しつつFadeIn、FadeOutのようなものを使う代替え案などがあれば教えていただきたいです。

2021年9月8日水曜日 21:49:14 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Sep 9, 2021, 11:14:52 PM9/9/21
to 宴ユーザーグループ
はい。今のところはカスタムコマンドで独自に作成するしかないです。
単純なカラーフェードなのであれば、画面全体を覆うようなImageを用意してそれをフェードイン、フェードアウトするようにカスタムコマンドを作成すればできると思います。


2021年9月10日金曜日 10:41:17 UTC+9 kikuok...@gmail.com:

ムー

unread,
Sep 13, 2021, 8:43:45 AM9/13/21
to 宴ユーザーグループ
すいません、カスタムコマンドの使い方が分かっていないのですが、
カスタムコマンドでupdateみたいな処理を作成する場合、どのように記述すればよいのでしょうか?
今作っている処理だとフェードの処理が一回しか呼ばれず次のコマンドが実行されてしまいます。
稚拙な質問で大変申し訳ないのですが、何卒宜しくお願いいたします。

2021年9月10日金曜日 12:14:52 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Sep 14, 2021, 9:56:29 PM9/14/21
to 宴ユーザーグループ
単純なコマンドとして扱うのであれば、Waitメソッドが、Updateのようなもので、これがtrueになっている場合は、毎回呼ばれます。
フェード中は更新処理をしてtrueを、フェードが終わったらfalseを返すようにしてみてください。

public override bool Wait(AdvEngine engine)
{
return true;
}


エフェクト系コマンドに特有のスキップ処理なども可能にしようとすると、ちょっと話がややこしくなってしまって、
ほかのエフェクトコマンドと連動して動く必要があるのでAdvCommandEffectBaseというのを継承する必要があります。
サンプルは以下のようになります。(実際に動かしてないので、細かいミスがあるかもしれません)
FadeManager というのは、独自に作ったフェード管理処理コンポーネントがあると仮定しています。クラス名などは自由に変えてください。
実際のフェード処理はそのコンポーネントで行ってください。

using UnityEngine;
using System.Collections;
using UtageExtensions;

namespace Utage
{

public class AdvCommandEffectCustom : AdvCommandEffectBase
, IAdvCommandEffect
{
Color color;
float time;
FadeManager fadeManager;

public AdvCommandEffectCustom(StringGridRow row, AdvSettingDataManager dataManager)
: base(row,dataManager)
{
}

//パラメーターの解析
protected override void OnParse(AdvSettingDataManager dataManager)
{
this.color = ParseCellOptional<Color>(AdvColumnName.Arg1, Color.white);
if (IsEmptyCell(AdvColumnName.Arg2))
{
this.targetName = "SpriteCamera";
}
else
{
//第2引数はターゲットの設定
this.targetName = ParseCell<string>(AdvColumnName.Arg2);
}

this.time= ParseCellOptional<float>(AdvColumnName.Arg6,0.2f);
ParseWait(AdvColumnName.WaitType);
}


//エフェクト開始
protected override void OnStart(AdvEngine engine, AdvScenarioThread thread)
{
//外部に作ったフェード管理をコンポーネントを取得
fadeManager = engine.GetComponent<FadeManager>();
//フェードの開始。終了をコールバックで受け取る
fadeManager.StartFade(targetName,color,time,
()=>
{
OnComplete(thread);
});
}

//エフェクトのスキップ処理
public void OnEffectSkip()
{
//スキップ処理
if (fadeManager != null)
{
fadeManager.SkipFade();
}
}
//エフェクトの終了処理
public void OnEffectFinalize()
{
fadeManager = null;
}
}
}


2021年9月13日月曜日 21:43:45 UTC+9 kikuok...@gmail.com:
Message has been deleted

ekusu ekusu

unread,
Oct 5, 2022, 2:01:28 PM10/5/22
to 宴ユーザーグループ

質問です。

上記の方と同じようにURP環境でのフェードインアウトを実装しようとしているものです。

通常のカスタムコマンドはリファレンス等を読んで実装できたのですが
上記のカスタムコマンドに関してはわからない所があるので
お教えいただきたく質問させて頂きます。

1 上記のソースは
AdvCommandWaitBase
第六引数でウェイト処理をする系のコマンドの基底クラス
から派生しているものかと思いますが

「第六引数でウェイト処理をする系のコマンド」 を登録する場合
通常のカスタムコマンドと違って
AdvCommandParser に直接書いて追記する方法になるのでしょうか?
2021年9月15日水曜日 10:56:29 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Oct 7, 2022, 4:23:18 AM10/7/22
to 宴ユーザーグループ
いえ、通常のカスタムコマンドと同じように、 CreateCustomCommandのid判別のところに書いてください。

AdvCommandEffectBase は  AdvCommandWaitBaseを継承していて、
AdvCommandWaitBase は  AdvCommand を継承しているので、
AdvCommandEffectBaseを継承すれば、自動的にAdvCommand を継承することになるので、カスタムコマンドに使用できます。


   


2022年10月6日木曜日 3:01:28 UTC+9 ekusu ekusu:

マッドネスラボ

unread,
Oct 7, 2022, 6:48:14 AM10/7/22
to 宴ユーザーグループ
>AdvCommandWaitBase
>  第六引数でウェイト処理をする系のコマンドの基底クラス
Arg6列でウェイト処理をするのは旧仕様で、
今はWaitType列を使用します。
また、その基底クラスは、AdvCommandWaitBaseではなくAdvCommandEffectBaseで、
protected virtual void ParseWait(AdvColumnName columnName) で行っています。
ソースコードのコメントが「第六引数」となっているのは古いままで間違いです。すみません。



2022年10月7日金曜日 17:23:18 UTC+9 マッドネスラボ:

ekusu ekusu

unread,
Oct 20, 2022, 5:35:24 AM10/20/22
to 宴ユーザーグループ
できました!! 勘違いしていたところがあって ものすごく時間がかかってしまいましたが
現時で想定の動きをしております。

質問がC#の初歩的な所にも及んでしまっていたかもしれませんが
ご丁寧にご返答頂きありがとうございました!

2022年10月7日金曜日 19:48:14 UTC+9 マッドネスラボ:
Reply all
Reply to author
Forward
0 new messages