ねこバタ会議ねこバタ会議スマホアプリ制作に関するブログです。【Unity5】非同期ロードでローディング画面を実装する。Personalでは、Unity4まではPro版のみ使用可能だった機能が使用できるようになっています。今回はそれらの機能の一つ、非同期ロードを使用してシーン間のローディング画面を作りたいと思います。例によって参考ページを挙げておきます。LoadLevelAsyncをつかってシーンの非同期読み込みをするUnity3DのLoadLevelAsyncとAsyncOperationで非同期ロードを待ってみるローディング中は進捗バーとテキストによって状況を表示します。TypeをFilled、Horizontalに設定しています。完了を待って処理をしたかったのでロード完了を待とうとしたところ、上記参考ページの二つ目に記載されているように、async.isDoneにならずに0.9までしか進まないという状態になりました。原因はよくわかりませんが、参考ページと同じく0.9でループを抜けるという強引な解決方法をとっています(シーンのロード自体は問題なく行われます)。}シーンのロードが完了してから1秒後に遷移を行なっています。【Unity】DOTweenでポーズ中のアニメーションを実行する。前に以下の記事でポーズ時のアニメーションを実効する方法について書きました。Timeに設定することで実現しています。読んでみると、Animationとして登録しているものにしか対応していません。Invoker.InvokeDelayedによる遅延処理はアニメーション用ではないので(やろうと思えばできるでしょうが...)。いうわけで、今回はポーズ中のアニメーションをもっとスマートに実現する方法として、DOTweenをご紹介させていただきます。iTweenは手軽にアニメーションできるので便利ですが、uGUIの要素をアニメーションさせることができなかったり面倒だったりという面がありました。DOTweenはRectTransformなどの変更に対応しているため、簡単にアニメーションを実行できます。DOTweenでuGUI要素をアニメーションさせる具体的な方法については、下記ブログなどを参考にしていただくのがいいと思います。TweenさせるにはDOTweenがオススメ簡単な導入フローを書くと、以下のようになります。DOTweenを実行する必要があるということが挙げられます。existその他注意点や設定についてはの詳細はDOTweenの公式サイトをご参照下さい。私のようにあまり英語が得意でない場合でも理解できるように書かれているので、多分問題無いと思います。Independentにチェックを入れれば、ゲーム中のタイムスケールに関係なくアニメーションを実行することができます。あとは以下のような感じでアニメーションの指定を行えば、ゲーム中のタイムスケールに関係なくアニメーションを実行することが出来ます。0.5f);なお、アニメーションのタイムスケールをゲームのものと合わせたいときには、以下のように個別にタイムスケールを設定することもできます。Time.timeScale;iTweenを使ったことのある人もそうでない人も簡単に導入できると思いますので、コード側でアニメーションの実行をしたいという方は検討してみてもいいと思います。(5.2対応追記)相変わらずガンナーズ・ハイの作成に勤しんでおります。シナリオの再生部分を作っているのですが、インターフェースが文字だけというのはさびしい感じなので、アイコンを表示することにしました。AwesomeをUnityで使うことにしてみます。Awesomeというのは、数百種類に及ぶアイコンをフォントとして使えるようにしたものです。CSSなどで手軽に使えるようになっているので、ウェブデザインをされたことのある方は、ご存知の方も多いと思います。Awesomeについての詳しい説明は以下のページなどをご参照下さい。Awesomeは、Unityでも手軽に使えるようにパッケージになっています。以下のページの説明に従って導入します。Unity4.6以上が必要です。AWESOME導入の手順は以下の通りです。Scriptsあたりからどうぞ5.表示したいアイコンをUnicode形式で指定という感じですね。パッケージの導入はいらないかもしれません。uGUIのTextコンポーネントの場合はUnicode形式での文字コードの指定ができないため、できるように拡張したものがTextUnicode.csです。それでは、実際に使ってみましょう。TextUnicodeのFontに「fontwawesome-webfont」を指定して下さい。Cheatsheetを参考にして、使いたい文字を以下のように指定します。ここでは家のアイコンを例にやってみましょう。[&#xf015;]→\uf015として指定します。「&#x」を「\u」にして、セミコロンを取ればいいですね。すると、以下のようにアイコンが表示されます。表示することもできます。色はColorプロパティで自由に変更できます。ちなみに、私はいちいち入力するのが分かりづらかったので、フォントの名前から自動的に変換されるようにしました。以下に変更したものを置いておくので、使いたい方はご自由にどうぞ。動作保証はしませんので、ご理解いただいた上でご利用下さい。TextUnicode.csTextUnicode.cs5.2対応版。ダウンロード後にファイル名をTextUnicode.csに変更してください。上記のスクリプトを使用すると、Cheatsheetの名前からアイコンを指定することができます。家の場合は「fa-home」です。アイコンは1つのみしか指定できません。比べると、若干見やすくなったような感じが...するような、しないような...。Awesomeのアイコンは癖がなくて使いやすいので、一度導入の仕方を覚えておくと、他のゲームなどにも共通して使えると思います。動作が遅い時にFPS等の情報を確認する方法このブログでも何回か書いていますが、女子高生が校門の前で銃を乱射するというゲームを作っています。書くと非常に物騒な感じですね...レーティングとか色々大丈夫なのか心配になってきますね...(^_^;)で、ゲームの骨格が結構出来てきたので、実機で動かしてみたところ、動作がカクカクして見るに耐えません...。私の使用しているAndroidの端末が古いということもあるのですが、古い端末を使用されている方でも、それなりには遊べるようにしたいところです。弾丸などの新しいオブジェクトを生成して表示する際に時間がかかっているようで、その動作がある度にフレームが飛んでしまいます。今までまったく知らなかったのですが、Unityには色んな情報を見られる機能があるんですね。以下のページを見て、どんな状態なのかを確認してみました。5ならフリー版でも問題なく使えます。Proの新機能FrameDebuggerでグラフィックパフォーマンスを改善するゲームビューにあるStatsというボタンを押すと、色々な情報が見られます。詳しくは私も知らないのですが、色々なオブジェクトをアクティブ化したり非アクティブ化したりすると数字が変わるので、それを参考にすれば良さそうです。細かいことはいつか勉強しましょう。上記のStatsで見られるのは、当然Unityエディタ上での情報です。参考にはなるのですが、重要なのは端末での動作ですね。端末の方については、こちらのページで紹介されていたスクリプトを使用しました。【Unity】メモリ使用量とか、FPSとか、色々表示するスクリプト:ほんにゃら重工スクリプトAllocationStats.csスクリプトを保存して、適当なゲームオブジェクトにアタッチするだけなので、とても簡単です。フォントサイズとか調整していないので見づらいかもしれませんが、状態の把握が出来ればいいので私的にはオッケーです(阿武隈)。上記の画像では30.1FPSと表示されていますが、調整前は9~26FPSあたりを行ったり来たりしていました。不必要なオブジェクトを非アクティブ化したり、都度生成していたプレハブを最初に一括で生成して使いまわしたりしたところ、動作もかなり軽くなりました。情報を確認できるというのはいいですね。情報可視化ツールはたくさんあると思いますし、自作もそれほど手間ではないと思うので、自分にあったものを見つけるなり作るなりしてください。相変わらずレベルの低いブログですが、一歩ずつ進んでいきたいと思います。学年ビリのギャルが40人倒して合格を目指す話」となりました。色をカラーネームで指定する今日も大抵の人にとってはあまり役に立たないUnityのTIPSです。Unityに限らず、Objective-CでもJavaでも意外と困ったのが色の指定方法です。0.0~1.0とか0~255とかでRGB指定をすればいいのですが、そもそも色の配合要素を一々覚えるのは面倒です。UnityではGUIで指定してPresetに保存したものを使いまわすこともできるので楽ちんなのですが、基本的にコードで操作したい私のようなアナログ人間にとっては使いづらい場面もあります。いうわけで、今日は「カラーネームで色を指定する」です。カラーネームというのは、CSSやHTML等で使用される色名のことです。redのような感じで使われます。ブラウザによって表示される色が若干異なったり、色によっては表示されなかったりするので、個人的にはあまり使いませんでしたが、今は色名からRGB要素の指定を行うだけなので問題ありません。カラーネーム147色:TAG<index>カラーネームと16進数が併記してあるサイトから適当にデータを引っ張ってきて、適当に作成したphpスクリプトで16進数を10進数に変換しました。出力結果からC#スクリプトにして、完了です。最初に変換した時に、なぜか若干色味が違う感じだったので、適当に暗めにするように処理した記憶があります。以下のスクリプトはカラーネームに正しく対応しているわけではありませんので、ご注意下さい。簡易的に色名で指定できるようにしただけですね。ちなみに適当なので143色くらいしかないと思います。Colors.Crimson;のような感じで指定します。透過色の場合は、以下のようにColors.Alphaで色と透過率を指定します。0.3f);もし色が気に食わない場合や自分好みの色がない場合は、数値を変えたり新しい色名を付け加えていけばいいんじゃないかなと思います。Objective-CやJavaでも似たようなものを作ると楽になります。プログラミングの文法等は私は全然理解していないので、色々正しくない部分もあると思います。Nums!-楽しく電卓タイピング-自己紹介スマホアプリを作っています。初心者ですがどうぞよろしくお願いいたします。相互リンク等、お気軽にご連絡ください。Gamesあぷりの輪スマホゲームCHこたえもん@アプリレビューGameTimes予約トップ10スマホ無料ゲーム総合サイトゲームブック温故屋ファミ通Appあぷまがどっとねっと睡蓮のゲーアニ三昧トサカマニアックス荒ぶる者たちのゲームプレイ日記「微糖勇者」いまきたこうぎょう。Android&iOS(Objective-C)【Unity5】非同期ロードでローディング画面を実装する。