(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

isShowingSplashScreenが非推奨になったので、SplashScreen.isFinishedを使ってみた【Unity】


このエントリーをはてなブックマークに追加

この記事でのバージョン
Unity 5.6.1f1


はじめに

気付いたら、スプラッシュが表示されているか確認する際に使っていたisShowingSplashScreen



非推奨になっていました。

warning CS0618: `UnityEngine.Application.isShowingSplashScreen' is obsolete:
`This property is deprecated, please use SplashScreen.isFinished instead'

f:id:kan_kikuchi:20170524053837p:plain


警告文によるとSplashScreen.isFinishedというものを代わりに使えとの事。

なので今回は、そのSplashScreen.isFinishedを使ってみたという記事です。


SplashScreen

そもそもSplashScreenクラスってなんぞやという所からなんですが、

名前の通りスプラッシュに関するクラスで、5.5から追加されたっぽいです。



なお、今回使うのはUnityEngine.Rendering.SplashScreenで、

下記のUnityEditor.PlayerSettings.SplashScreenではないので注意が必要です。





isFinished

では本題のisShowingSplashScreenからisFinishedへの変更ですが、

基本的にはそのまま置き換えれば大丈夫です。


ただし、isShowingSplashScreenはスプラッシュを表示しているか?だったのに対し、

isFinishedはスプラッシュを表示し終えたか?と意味が異なっている点には注意が必要です。

//isShowingSplashScreen変更前
private void Update() {
  if (!Application.isShowingSplashScreen) {
    //スプラッシュ表示後
  }
}
//isFinishedへ変更後
private void Update() {
  if (UnityEngine.Rendering.SplashScreen.isFinished) {
    //スプラッシュ表示後
  }
}


余談ですがSplashScreenにはBeginというメソッドがあり、

任意で(エディタ上でも)スプラッシュスクリーンの再生が行えます。

f:id:kan_kikuchi:20170525062424g:plain


これを使うとスプラッシュ表示中に音を鳴らすなどの実装が可能なようです。


また、Drawというメソッドもあり、ドキュメントの例だと以下のように使われているのですが、

IEnumerator Start()
{
    Debug.Log("Showing splash screen");
    SplashScreen.Begin();
    while (!SplashScreen.isFinished)
    {
        SplashScreen.Draw();
        yield return null;
    }
    Debug.Log("Finished showing splash screen");
}


Drawを実行しなくともBeginだけでスプラッシュは表示されるので、

ちょっと使い方が分かりませんでした……。


おわりに

なにはともあれ、非推奨になった箇所は迅速に修正する事をオススメします。

いつ使えなくなるか分からないので(:3っ)∋〜