ねこバタ会議

スマホアプリ制作に関するブログです。

2015年07月

Unity5 Personalでは、Unity4まではPro版のみ使用可能だった機能が使用できるようになっています。
今回はそれらの機能の一つ、非同期ロードを使用してシーン間のローディング画面を作りたいと思います。

例によって参考ページを挙げておきます。



ローディング中は進捗バーとテキストによって状況を表示します。
進捗バーはImage TypeをFilled、Horizontalに設定しています。
完了を待って処理をしたかったのでロード完了を待とうとしたところ、上記参考ページの二つ目に記載されているように、async.isDoneにならずに0.9までしか進まないという状態になりました。
原因はよくわかりませんが、参考ページと同じく0.9でループを抜けるという強引な解決方法をとっています(シーンのロード自体は問題なく行われます)。
よくわかりませんし、動けばいい派なのであまり気にしないことにします…(^_^;)

IEnumerator LoadScene(){

    AsyncOperation async = Application.LoadLevelAsync("Game");
    async.allowSceneActivation = false;    // シーン遷移をしない

    while (async.progress < 0.9f) {
        Debug.Log(async.progress);
        loadingText.text = (async.progress * 100).ToString("F0") + "%";
        loadingBar.fillAmount = async.progress;
        yield return new WaitForEndOfFrame();
    }

    Debug.Log("Scene Loaded");
    
    loadingText.text = "100%";
    loadingBar.fillAmount = 1;
    
    yield return new WaitForSeconds(1);
    
    async.allowSceneActivation = true;    // シーン遷移許可
    
}
 
シーンのロードが完了してから1秒後に遷移を行なっています。
動画にしてみましたが、実機ではないので読込が一瞬で終わってますね(^_^;)



スプラッシュやタイトルなどは一応完成ということで、現在の完成度は80%くらい…というところです!

前に以下の記事でポーズ時のアニメーションを実効する方法について書きました。

Unityでポーズ中のアニメーションと遅延処理を行う方法

上記記事では、AnimatorのUpdate ModeをUnscaled Timeに設定することで実現しています。
が、よくよく読んでみると、Animationとして登録しているものにしか対応していません。
Invoker.InvokeDelayedによる遅延処理はアニメーション用ではないので(やろうと思えばできるでしょうが…)。

というわけで、今回はポーズ中のアニメーションをもっとスマートに実現する方法として、DOTweenをご紹介させていただきます。
iTweenは手軽にアニメーションできるので便利ですが、uGUIの要素をアニメーションさせることができなかったり面倒だったりという面がありました。
DOTweenはRectTransformなどの変更に対応しているため、簡単にアニメーションを実行できます。

DOTweenでuGUI要素をアニメーションさせる具体的な方法については、下記ブログなどを参考にしていただくのがいいと思います。



簡単な導入フローを書くと、以下のようになります。
【1】DOTweenをダウンロード
【2】Assetsに入れる
【3】UnityエディタのToolsからセットアップ

注意が必要な点としては、DOAnchorPosなどのuGUI要素をコントロールするためには、Tools > DOTween Utility PanelからSetup DOTweenを実行する必要があるということが挙げられます。


Dotween1


その他注意点や設定についてはの詳細はDOTweenの公式サイトをご参照下さい。
私のようにあまり英語が得意でない場合でも理解できるように書かれているので、多分問題無いと思います。

ユーティリティーパネルからPreferencesを開き、TimeScale Independentにチェックを入れれば、ゲーム中のタイムスケールに関係なくアニメーションを実行することができます

Dotween2

 
あとは以下のような感じでアニメーションの指定を行えば、ゲーム中のタイムスケールに関係なくアニメーションを実行することが出来ます。
 
RectTransform rt = GetComponent<RectTransform>();
rt.DOAnchorPos(new Vector2(100, 0), 0.5f);

なお、アニメーションのタイムスケールをゲームのものと合わせたいときには、以下のように個別にタイムスケールを設定することもできます。

rt.DOAnchorPos(new Vector2(100, 0), 0.5f).timeScale = Time.timeScale;

iTweenを使ったことのある人もそうでない人も簡単に導入できると思いますので、コード側でアニメーションの実行をしたいという方は検討してみてもいいと思います。
ちなみに私はMecanimはとても苦手です…(^_^;)

ブログやツイッターをご覧の方はお分かりかもしれませんが、私は暇を見つけては色々なゲームをプレイしています。
予約TOP10で新しいゲームを予約してインストールしてプレイしては消しを繰り返しています。
ゲーム内容を見てどんなコンセプトで作られているかや操作感を試しているのですが、一番大きいのはやはりゲームが好きだからですね。

で、先日もとあるソシャゲをインストールして遊んでいたのですが、それがどうにも自分には合わない部分が多くて、もやもやとした感情を抱いていたのでした。
クオリティが低いとかゲームとして面白くないといったことではなく、私にとっては画面の要素が見づらくて遊びにくくイライラしてしまう感じだったのですね。

他の人は一体どう思っているんだろう…と思ってGoogle先生で検索したところヒットしたのが、今日ご紹介させていただく独身OLさんの運営されているアプリレビューブログでした。
つい先日新しいサイトに移転されたそうなので、本日はこちらのサイトをご紹介させていただくことにしたいと思います。

 ストーリー重視!アプリレビュー 

ストーリー重視アプリレビュー

管理人の独身OLさんはファミコン時代からゲームをプレイされているそうで、夢は「廃課金になって札束で殴りあうこと」という、とても素敵な方です。
ゲームの好みも濃くて、思わず共感してしまいますね。
ちなみにサラダの国のトマト姫がファミコンで出ていたのを初めて知りました(^_^;)

独身OLさんのレビュー内容は、ゲームの良い点と悪い点を非常に的確に挙げられている点にとても共感を覚えました。

例えば、私がイライラしてしまったゲーム『ひめがみ絵巻』については以下のような感じです。
和と中華を混ぜたような世界観はとても雰囲気がよく、音楽も癒し系。

グラフィックも手書き風で温かみがあり、大神で心をつかまれた人はたぶん見ちゃうでしょう。

キャラクターも神話や伝説の登場人物ばかりでそそられます。
メニュー画面の使いにくさがひどい。

メニューのどこに何があるかが直感的に理解できないし、見たいものが見える位置に置いてない。

これちゃんとカテゴライズしてあるの?と疑問に思うようなゴチャゴチャぶり。

単なる表面的な感想ではなく、きちんと遊んだ上で評価すべき部分や足りない部分を挙げていくという姿勢がとても素晴らしいと思います。
おそらくそれはゲームを楽しもうとする気持ちからきているのかな、と感じます。
また、各要素について分析や整理がきちんとされており、なんというか仕事のできる事務員さんの机や引き出しを見ているような気になります。
私は昔そういう事務員さんによく怒られていました…(^_^;)

他のゲームについてもとても的確で、読んでいると色々と勉強になります。
作る側の意図や気持ちと遊ぶ側の気持ちは往々にしてズレが生じるものですが、独身OLさんの記事のように「どこがいいか」「どこが悪いか」がよくわかるレビューというのは、開発や企画をする上で非常に参考になると思います。

今後が楽しみなレビューサイトです。
皆さんも是非ご覧いただければと思います!

ちなみに、現在制作中のゲームはそろそろ予約TOP10で予約を開始しようと思っております。
開始したら改めてお知らせさせていただきますm(__)m 

↑このページのトップヘ