ロード時、一瞬予期せぬ画面が見えることがあります。

357 views
Skip to first unread message

mikazuki

unread,
Jan 11, 2017, 7:29:46 AM1/11/17
to 宴ユーザーグループ
お世話になっております。
シナリオ中でSavePointを使っているのですが、ロードした際、一瞬SavePointとは異なる画面が開いてしまいます。

<本来の動作>
1.ロード画面でロードしたいアイコンを押す
2.画面が暗転する
3.SavePointの画面が表示される

<こちらの環境での動作>
1.ロード画面でロードしたいアイコンを押す
2.画面が暗転する
3.一瞬、画面中央に白い四角が表示され、ほぼ同時にSavePointとは異なる画面が表示される
4.画面が暗転する
5.SavePointの画面が表示される

Unityエディターと、Windowsのスタンドアローンで確認しましたが、両方で発生します。
数回セーブ&ロードを繰り返してみたところ、毎回発生しています。

必要でしたら、プロジェクトや発生時の動画をお送りします。
どうぞよろしくお願いします。

マッドネスラボ

unread,
Jan 11, 2017, 11:09:51 PM1/11/17
to 宴ユーザーグループ
ありがとうございます。
まずはこちらで調査してみます。
こちらに返信していきますので、よろしくお願いします!

マッドネスラボ

unread,
Jan 12, 2017, 1:37:44 AM1/12/17
to 宴ユーザーグループ
すみません。
自分の環境だとうまく再現できませんでした。

こちらにファイルのほう送信いただけるでしょうか
https://www.dropbox.com/request/7oq5jlaIkPFM1fXITNpp

マッドネスラボ

unread,
Jan 13, 2017, 2:43:59 AM1/13/17
to 宴ユーザーグループ
関連しそうなバグを修正して、β版をb06に更新しました。
β版を再度DLして試してみてください。

mikazuki

unread,
Jan 13, 2017, 3:12:04 AM1/13/17
to 宴ユーザーグループ
ご返信が遅れて申し訳ございません。
b06、ダウンロードして確認させていただきました。
インポート後、セーブ・ロードして試してみましたが、問題が解消していないようでしたので、プロジェクトをお送りさせていただきます。
お手数おかけしますが、どうぞよろしくお願いします。

マッドネスラボ

unread,
Jan 13, 2017, 4:36:27 AM1/13/17
to 宴ユーザーグループ
プロジェクトのほう送信ありがとうございます。

こちら修正パッケージを試してみてください。
https://dl.dropboxusercontent.com/u/16976971/Utage/tmp/BugFixLoad.unitypackage

これで中央部分の白い四角は表示されなくなると思います。

別の画面が見えるというのは、本来は背景で隠されるUIが
背景のテクスチャがまだロードされていないため、見えてしまっているのだと思います。

ちょっとこれは宴のシステム側では回避できませんので、
ロードの直後に、UI画面も覆うようなフェードを掛けるのが良いかと思います。




mikazuki

unread,
Jan 13, 2017, 6:22:41 AM1/13/17
to 宴ユーザーグループ
修正パッケージをいただき、ありがとうございます。
中央部分の白い四角は表示されなくなりました。

>ロードの直後に、UI画面も覆うようなフェードを掛けるのが良いかと思います。
とのことですが、これは宴のフェードを利用するのではなく、「自分でフェードの仕組みを作って、ロードしたシナリオラベルの開始直後に呼び出す」ということで良いでしょうか?

アクティブになると同時に、オブジェクトにアタッチした黒い画面が表示され、数秒後に消えるスクリプトを書いて、GuiActiveでロード直後にtrueにするようにしてみたのですが、一瞬自作したUIが表示されてしまいます。


【オブジェクトのスクリプト】

    public float byousuu;

    void OnEnable ()
    {
        Debug.Log("オブジェクトオン");
        Invoke("Kesu", byousuu);

    }



    void Kesu()
    {
        Debug.Log("オブジェクトを消す");
        this.gameObject.SetActive(false);
    }


【Excelの記述】

*シナリオラベル SavePoint セーブポイント
GuiActive RoadGoFadeOutGui TRUE


ロードボタンを押した後、一瞬自作したUIが表示され、それが消えると同時にConsoleに「オブジェクトオン」と表示され、画面が黒くなります。
どうすれば自作したUIよりも先に、黒い画面(またはフェード等)を表示させることができるでしょうか。

宴のシステム外の質問で恐縮ですが、もしこの問題を回避できる手段にお心当たりがございましたら、お教えいただけましたら幸いです。

ちなみに、一瞬表示されるUIは、(「セーブ」ボタンや「ロード」ボタンのある画面(記録画面)に表示されているUIを除けば、)、ゲーム起動前や、セーブ時、セーブポイントではfalse(非アクティブ)になっている状態です。
また、一瞬表示されるUIは、GuiActiveの対象としてAdvGuiManagerコンポーネントに設定しています。(記録画面のUIも、AdvGuiManagerコンポーネントに登録しています。)
セーブ時やセーブポイントでは非アクティブになっているオブジェクトが、なぜロード直後に突然アクティブになってしまうのか分からない状態です。

どうぞよろしくお願いします。

マッドネスラボ

unread,
Jan 13, 2017, 10:00:36 AM1/13/17
to 宴ユーザーグループ
>一瞬表示されるUIは、(「セーブ」ボタンや「ロード」ボタンのある画面(記録画面)に表示されているUIを除けば、)、ゲーム起動前や、セーブ時、セーブポイントではfalse(非アクティブ)になっている状態です。
>また、一瞬表示されるUIは、GuiActiveの対象としてAdvGuiManagerコンポーネントに設定しています。(記録画面のUIも、AdvGuiManagerコンポーネントに登録しています。)
>セーブ時やセーブポイントでは非アクティブになっているオブジェクトが、なぜロード直後に突然アクティブになってしまうのか分からない状態です。
この状態なのであれば、セーブロードでも同じ状態になると思うのですが、もしかするとそこになんらかの不具合があるのかもしれません。

セーブポイントを使っている場合は、セーブロードはその時点から始まるので
セーブポイントの設定が、UIを消す前の部分になってるのかもしれません。

状況を見る限り
→セーブデータのロードが終わる
→UIの状態がセーブ前の状態(セーブポイントを設定している)になる→UIが表示される
→背景テクスチャがロードされる(シナリオ開始)
→シナリオ内でフェードアウトと場面変換
→シナリオジャンプ先でUIが消える(またはUIの手前にオブジェクトが描画される)
という流れになっているようです。


また、少々強引方法ではあるのですが、
「ロードの画面を閉じるのを数フレーム遅らせる」という方法で一応回避できます。
(この場合、再開後の最初の数フレームがロード画面のままになる感じです)
下記のパッケージを適用して

Save画面のWaitFrameOnLoadの値に待機フレームを設定してみてください。
(5フレームくらいがちょうどいいようです)


mikazuki

unread,
Jan 13, 2017, 7:02:36 PM1/13/17
to 宴ユーザーグループ
>セーブポイントの設定が、UIを消す前の部分になってるのかもしれません。
ご指摘ありがとうございます。
シナリオの書き方を見直したところ、セーブポイントの前でUIが消えていなかったので、消すように修正いたしました。

ご助言とパッケージのお陰で、意図しないUIが表示されてしまうことがなくなりました。
お忙しい中ご対応いただき、誠にありがとうございます。
Reply all
Reply to author
Forward
0 new messages