Unityを使った3Dゲームの作り方(かめくめ)Unityを使った3Dゲームの作り方(かめくめ)ゲーム開発エンジンUnityを使った3Dゲームの制作に参考になる情報を公開しています。3今回はタイトル画面からゲーム画面へと遷移する時の読み込み中(NowLoading)の画面を作成していきます。シーンの読み込みが終わるまで後どのぐらいか?というのがわかると親切ですね。今回の機能を作成するにあたりコルーチンを使っていますので、コルーチンって何!?という方はUnityでコルーチンを使って定期的に処理をするUnityでコルーチンを使うと定期的に何らかの処理を行える事が出来るようになります。19:39を参照してください。practices.learn.unity.comを参考にさせて頂きました。スポンサーリンクタイトル画面用のシーンを作成するまずはタイトル画面用のシーンを作成し、ボタンを押すと次のシーンを読み込むスクリプトを作ります。タイトル画面のUIを作成するヒエラルキー上で右クリック→UI→Canvasを選択します。子要素に右クリック→UI→Button、UI→Panelを選択し名前をBackgroundとします。Buttonは押した時に次のシーンの読み込みを開始するスクリプトを実行させます(設定は後で行います)。Backgroundは次のシーンを読み込んでいる間に表示する背景にします。Backgroundの子要素に右クリック→UI→Sliderを選択しスライダーを作成します。Sliderの値はスクリプトから操作するのでinteractableのチェックは外しておきます。Areaは使わないので削除するかインスペクタで名前の横のチェックを外し見えないようにしておきます。↑がヒエラルキーになります。Backgroundを選択し、インスペクタのImageのColorの色部分を選択し色を変更します。↑のように背景色を黒で透明度を0にして透けて見えないようにしておきます。FillAreaのサイズを調整します。↑のような感じでスライダーの背景部分を調整します。スライダーの値を表すFillも調整します。SliderのValueを1にした時にFillがFillAreaを満たすようにFillのRectTransformを調整します。ここでSliderのValueが1の時にFillが満たされる状態に作っておかないと100%の時もスライダーの値が満たされる事がありません。↑が出来上がったローディング中の画面になります。Area/FillのImageのColorも赤色に変更してローディングメーターが赤くなるようにしました。BackgroundはButtonを押した時にアクティブにして表示するようにする為、最初はインスペクタの横のチェックを外し見えないようにしておきます。次にButtonを押した時に次のシーンを読み込むスクリプトを作成していきます。Cameraに取りつけます。null;}}}NextSceneメソッドはButtonをクリックした時に呼び出す関数でロード画面UIをアクティブにしコルーチンを開始しています。LoadDataメソッドでは指定したシーンを読み込みasyncに入れています。今回はLoad1という名前のシーンを読み込んでいます。asyncは非同期動作であるコルーチンで使用するAsyncOperationの値で読み込みの状況を把握する事が出来ます。whileループで読み込みが終了していない間はスライダーの値にasync.progressの値を入れています。async.progressはfloat型の値で0~1の値が得られます。Sliderの値はデフォルトでは0から1のfloat型の値となっているのでそのままslider.valueに入れる事で進捗状況がわかるようになっています。async.progressが0.9を越えると実際のシーン移動がアクティブになる?ようなのでMathf.Clamp01を使ってasync.progressの値を0~1の間に補正します。Click()にこのLoadingスクリプトのNextScene関数を設定しましょう。↑のようにCanvasの子要素にあるButtonを選択しNextScene関数を設定します。これで次のシーンを読み込むタイトルシーンが出来上がりました。出来たシーンをLoadingという名前で保存しておきます。ProjectタブのAssetsフォルダで右クリック→Create→Folderを選択し名前をScenesにしてこの中にLoadingシーンを入れておきます。次に読み込まれるシーンを作成していきます。読み込まれるシーンのゲームオブジェクトを作成するProjectタブのAssetsフォルダのScenesフォルダ内で右クリック→Create→Sceneを選択し名前をLoad1とします。Object→Cubeを選択しサイズを変えStaticにチェックを入れます。↑のように変更します。このCubeをコピーし10個ほど作成しておきます。次にヒエラルキーで右クリック→Canvasを選択し名前をFadeInとします。子要素に右クリック→Panelを選択し作成します。Panelを選択し、インスペクタのImageのColorを黒の透明度をなしにしておきます。↑が出来上がったヒエラルキーになります。新しいシーンLoad1が読み込まれた時に黒い背景から段々透明になるフェードインの処理を追加しましょう。FadeInゲームオブジェクトにFadeInというスクリプトを作り取りつけます。WaitForSeconds(fadeInTime);}}}インスペクタでおおよその透明化する為の時間を設定出来るようにしてます。Start関数内でfadeInTimeの値を書き換えコルーチンでの待ち時間を計算しています。FadeIn関数内ではfor文を使いPanelのImageのColorのAlpha(透明度)を変更し、背景色を変えていきます。作成したシーンを登録するシーンが2つ出来たので登録しましょう。Settings...を選択します。Buildに作成したLoadingとLoad1シーンをドラッグ&ドロップします。Loadingシーンを上に移動します。シーンは上から順番に再生されますので最初にLoading(タイトルシーン)が再生されます。上のようにシーンを登録しました。ローディング画面とフェードインを確認する機能が完成したのでローディング画面とフェードインが出来ているかどうか確認しましょう。読み込み率がパパッと変わってしまってうまく動作しているかちょっとわかり辛いですね・・・。読み込むシーンの容量が小さいからという理由だけではなく、わたくしのパソコンだと綺麗にローディングが進むのを確認出来ませんでした・・・(^_^;)fadeInTimeは1を設定したのでだいたい1秒ぐらいで画面が黒から透明に変わっています。ローディング時にエラーが出て実行出来ない!?さきほど挙げたローディングの進み具合の件ではなく、コルーチンを使用して進捗処理をしているスクリプトでエラーが出て同じように出来ない事があります。Unity2017.3.1f1で確認したところエラーは発生しませんでした。↑のようにエラーが出てシーンの読み込みが出来ません。エラーの内容はメインスレッドでのみGetLocalizedStringは実行されます。シーンをロードする時にコンストラクタやイニシャライザは実行されます。いう事でAwakeかStartを使ってくださいみたいな内容です。んー・・・・初期化はAwakeかStartを使ってといわれても何の事を言ってるのかわかりません。読み込むシーンによってこのようなエラーが出てしまいます。↑のようなエラーが出ます。TreeEditorがなんちゃらと出ています。このTreeEditorはUnityのツールで自分で木を作ってTerrainで使えるようにするUnityの木を作成する事が出来るツールを使って自分で木を作成していきます。自分で作成した木にコライダを設定しTerrainで使う事も出来ます。16:16で使ったUnityに付いている木を作るツールです。そこで思ったんですが、読み込んだシーンではこのTreeEditorを使って作成した木を設置していたんです。試しにこの木をヒエラルキーから削除して読み込みをしてみたら問題なく読み込めました・・・・。自前の木を設置してると読み込みが出来ないんですかね・・・・(^_^;)わたくしのUnityは5.3.4f1なんですがバージョンアップすると問題は出ないんですかね・・・(わたくしのパソコンではもうバージョンアップ出来ない・・・)。20:16そうなんですね・・・、Unity5.3.4f1(それ以前かも?)でのTree作成ツールで作った木を配置していると発生していたのですが、本日Unity2017.3.1f1で確認したところエラーが出なくなっていました。情報ありがとうございました。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。サイト内検索が出来ますプロフィール管理人のかめくめちゃんです。(-_-)メールはこちらにお願いします(記事への質問はコメント欄にお願いいたします)。kamekumechan@gmail.comいずれはSIRENやバイオハザードみたいなアクションゲームを作りたいと思っています。ゲームシナリオが書けないので面白いゲームはなかなか作れません・・・・。(^_^;)名前の由来はカメが好きだからです。プロフィールになってないな・・・・(-.-)Unityをこれから始める人へこれからUnityを使ってみようという方はUnityを使った3Dゲームの作り方(かめくめ)の歩き方Unityを使った3Dゲームの作り方(かめくめ)で、はじめてUnityの学習をする時の当ブログの記事を読む順番を書きました。21:43の記事に記載の順番で見て頂くとUnityの基本的な使い方がわかり、簡単なTPSゲームの作成までが出来ます。Д`)シクシク...お知らせ2020/02/15個人的にUnity2019.3.1f6をインストールしました。2020/01/31個人的にUnity2020.1.0a21(アルファ版)をインストールしました。2018/08/07コメント欄へのわたくしの返信は停止しております。わたくしに出来る事は既に記事にしてあるので、ブログ右上の検索窓を活用してください。(._.)またブログの最初の方の機能を積み上げていく記事に関しての疑問点は当ブログ記事のスクリプトの説明と寄せられた質問への回答Unityを使った3Dゲームの作り方(かめくめ)の機能積み上げ形式の記事のスクリプトの説明と寄せられた記事の機能についての質問への回答を掲載しています。21:41も参照してみてください。コメントの返信はありませんが、回答は記事に反映されている可能性があります。当ブログはハイスピードプランです。WordPressの編集画面の動作が早くなった。Unityを使った3Dゲームの作り方(かめくめ).。