OpenSimpleFramework201801
unityroom向けなどの小作品向用Unity簡易フレームワークです。
機能は以下の通りです。
- シーン切り替えに伴う画面やBGMのフェードイン・フェードアウト
- スコアの管理(カンスト、画面更新、ランキング呼び出し)
- unityroom用のネットランキングとツイート機能
- TextMesh Pro
- ゲームシーンにPostProcessing Stack V2のBloom
- 効果音、BGMの再生(3Dモードは未設定)
ライセンス
Copyright (c) 2018 Yu Tanaka
前提
- Unity2018.1.0f2
デモ
最初の設定
このプロジェクトは、TextMesh ProやPostProcessing Stackなどのアセットを含みません。クローンしたままではエラーが出て動きませんので、以下に示す手順で設定をしてください。
まずは、このリポジトリーのmasterブランチをクローンするか、ReleasesからSource codeをダウンロードして、プロジェクトを入手してください。
UI Builderをお持ちの場合
ランキングとツイートの仮アイコン画像が、Assets/Images/UI Builder
フォルダーに入っています。
これらは、UI - Builderの同名のファイルの利用を想定しています。UI Builderをお持ちの場合は、同ファイルをこのフォルダーに上書きコピーしておくと、本来のイメージ通りに表示されます。
UI Builderのものを使う必要はないので、とりあえずそのまま利用したり、自由に書き換えてください。
公式パッケージを追加
Unityを起動して、サンプルプロジェクトを読み込んでください。まずは、TextMesh ProとPost Processing Stack v2をインポートします。
- UnityのWindowメニューから、Package Managerを起動します
- Allをクリックして、Postprocessingを選択したら、Installボタンをクリックします
- 同様の手順で、TextMesh Proもインストールします
以上で、必要な標準パッケージのインストールは完了です。[x]ボタンでPackage Managerを閉じてください。
TextMesh Proの初期設定
TextMesh Proの基本アセットをインポートします。
- Windowメニューから、TextMesh Pro -> Import TMP Essential Resourcesを選択します
※WindowメニューにTextMesh Proが見当たらない場合は、一度Unityを閉じて、再起動してください。
- Importボタンを押します
以上で、ProjectビューにTextMesh Pro
フォルダーが作成されます。
オンラインランキングの設定
オンラインランキングに、naichiさん( @naichilab )とすずきかつーきさん( @divideby_zero )が公開して下さっているものを利用しています。以下に手順が掲載れているので、ニフクラの設定、および、関連データのインポートをしてください。
ニフクラSDKのバージョンは3.2.2で動作確認しています。
ニフクラライブラリの修正
Ver3.2.2のニフクラライブラリでは、通信完了を待つのにWaitForSeconds()
を利用しているのですが、これだとTime.timeScale
の影響を受けてしまいます。今回のフレームワークでは、ゲームオーバーやクリア時の処理を停止させるためにTime.timeScale
を0
にしているので、通信が進まなくなってしまいます。そこで、コードを一部変更します。
- ProjectビューのNCMB -> Scriptフォルダーを開いて、NCMBConnectionスクリプトをダブルクリックして開きます
Seconds
で単語検索すると、408
行目付近にyield return new WaitForSeconds (waitTime);
という行が見つかるので、以下のように修正します
yield return new WaitForSecondsRealtime (waitTime);
上書き保存します。これで、リアルタイムでの時間待ちになるのでTime.timeScale
の影響を受けなくなります。
注意!
このフレームワークを利用する場合は、ゲームオーバーやクリア時に同様の原因でアニメーションなどが停止します。停止させたくないUIなどでは、AnimatorのUpdate ModeをUnscaled Time
にして、Time.timeScale
の影響を受けないように設定してください。
ツイート用ライブラリの設定
ツイート機能を追加します。これもnaichiさん( @naichilab )ご提供のものを利用しています。以下のリポジトリーを開いて、手順に従ってパッケージをダウンロードして、プロジェクトにインポートしてください。
TextMesh Proのフォントを作成する
TextMesh Pro用のフォントを作成します。このフレームワークでは、fontna.comさんのフリーフォント、ロゴたいぷゴシックを利用しています。ライセンスをご確認の上、ダウンロードしてください。
- fontna.com ロゴたいぷゴシック を開いて、フォントをダウンロードします
- ダウンロードしたファイルを展開したら、
ロゴたいぷゴシック.otf
ファイルを、ProjectビューのFontフォルダーにドラッグ&ドロップします
- ファイル名が日本語だとTextMesh Proで利用できないので、
logotype-gothic
に名前を変更します
TextMesh Pro用のフォントの作成手順は、@thorikawaさんによる記事を参考にしました。記事の手順通りに進めてフォントを作成してください。
補足
作業手順の補足です。
- Atlas Resolutionは、2048x4096でも大丈夫です
- Character Set & Custom Rangeの設定方法は、ここの値を開いて、Rawボタンをクリックします
- テキストを全て選択してコピーします
- Character Set欄をCustom Rangeにします
- Character Sequence欄に貼り付けます
記事通りに作成が完了したら、SDFファイルをファイル名や場所を変更せずにそのまま保存してください。
保存が完了したら、TextMesh Proのウィンドウは閉じてください。
作成したフォントの適用
タイトルシーンにフォントを設定していきます。
- Projectビューから、Scenesフォルダーを開いて、Titleシーンをダブルクリックして起動します
- Hierarchyビューから、TitleCanvas -> Canvasを開きます
- TitleからVersionまで選択したら、作成したフォントを、InspectorビューのFont Asset欄にドラッグ&ドロップして設定します。日本語が表示されるようになります
タイトルやコピーライトなど、自由に書き換えてください。
オーディオの実装
タイトル画面とゲーム画面のBGM2曲と、効果音が4種類鳴るように設定されています。フレームワークでは、以下のものを利用しました。
他の音でも構わないので、何か設定すれば指定のタイミングで音が鳴ります。
効果音
効果音ラボさんの以下の音源を利用しました。
- 決定音
- 100万点 or ボールクリック音
- 10点
- 5点
BGM
BGMはH/MIX GALLERYさんの以下の音源を使いました。
以下のように、オーディオファイルはAssets/Audio
フォルダーにまとめて入れておくとよいでしょう。
オーディオの割り当て
以下の手順で割り当てます。
- HierarchyビューからGameSystemを開いて、SoundControllerを選択します
-
Projectビューから、Audioフォルダーを開いて、ダウンロードしたオーディオクリップを以下の順に設定します
- SE List
- Element0 decision9
- Element1 katana-slash5
- Element2 dart1
- Element3 sword-clash4
- BGM List
- Element0 o13
- Element1 n82
設定したら、クリック時や、操作時に音が再生されるようになります。
動作確認
以上で設定完了です。ランキングやツイートが呼び出せることなど、ご確認ください。
タイトル画面
- ランキングボタンをクリックして、ランキングが表示
- ツイートボタンをクリックして、ツイートダイアログ表示
- 画面をクリックするとゲーム開始
ゲーム画面
- フェードインが完全に完了したら操作可能になる
- ボールをクリックすると、効果音が鳴って100点加算
- +5, +10, +1Mボタンのクリックで、それぞれの効果音と加点
- Game Overボタンをクリックするとゲームオーバーへ
- Clearボタンをクリックするとクリア表示
ゲームオーバー画面
- ハイスコアを記録した状態でクリックするとランキング表示
- スコア更新していない場合はそのままタイトルへ戻る
クリア画面
- クリックするとゲーム画面に戻る
ランキング画面
- 閉じるとタイトルへ
まとめ
このようなフレームワークを用意しておくことで、ミニゲームを素早く完成させることができます。ランキングやツイートなどを最初から実装しておけば、常に機能が利用できるので便利です。
ご参考になれば幸いです。
利用アセット/参考URL
- TextMesh Pro
- PostProcessing Stack V2
- naichilab. 【Unity、WebGL】なるべく簡単にオンラインランキング機能をつけるサンプル
- ニフクラ Unity用SDK ncmb_unity
- naichilab. WebGLからツイートするサンプル
- fontna.com ロゴたいぷゴシック
- @thorikawa. UnityのText Mesh Proアセットで日本語を使うときの手順
- 効果音ラボ
- H/MIX GALLERY
- Brackeys. How to Fade Between Scenes in Unity
- シーン切り替え時のフェードはほぼこれのまんまです