2018年8月2日木曜日

Unity使ってみました その2

 このブログエントリからかなり月日がたってしまいましたが、久しぶりにまたUnityを触ってみました。

 久しぶりだったのでほぼ完全にUnityの操作を忘れていました。。。

 今回はUnityのGUIインターフェースの練習的なものを作成してみようと思い、テキストとボタンの機能だけをメインにしたクイズをUnityで作ってみました。

 少しづつ細かい部分を改善しようとすると、すぐ調べることが増えてしまい、単純なクイズでしたがわりと作成に手間がかかってしまいました。 3Dゲームでなく、2Dゲームですらなく、ただのボタンとテキストによるクイズなのに。。。

ちなみにその作成したクイズ「徳川将軍クイズ」をunityroomというサイトに投稿してみたものはコレです。
https://unityroom.com/games/tokugawa_shogun_quiz


以下、Unityによるクイズ作成にあたって参考にしたサイトです。


■■■■■①uGUI クイズアプリ作成 調べ■■■■■
・uGUI概要
uGUIチュートリアル
UIデザイナーが知っておきたいUnityの3つの機能

・クイズアプリ作成
uGUIで簡単!Unityクイズアプリで社内コミュニケーションの活性化
Unityでクイズアプリ作成のリンク

 まず最初に「uGUI概要」にあるサイトでUnityのuGUIという機能がだいたいどのようなものか把握してから、「クイズアプリ作成」にあるサイトの説明をもとに大まかなクイズ機能を作成しました。


■■■■■②古くなった非推奨の機能を修正■■■■■
参考サイト
Unity 5.3 で Application.LoadLevel が Obsolete になりました
【Unity】 LoadLevelは古いのでLoadSceneを使う
Unity5版のヒヨコ本を読む の続き
を参照しながら、

①の「クイズアプリ作成」にあるサイトで使用されている「Application.LoadLevel 」や「Application.loadedLevelName」を以下のように修正。 それらは古くなって、使用が非推奨になったようなので。

using UnityEngine.SceneManagement;
を忘れずに追加してから

■ 例1
Application.LoadLevel ("Title");

SceneManager.LoadScene ("Title");
と変更

Application.loadedLevelName;

SceneManager.GetActiveScene ().name;
と変更

■ 例2
if (Application.loadedLevelName == "Title") {
    Application.LoadLevel ("Quiz");
}

if (SceneManager.GetActiveScene().name == "Title") {
    SceneManager.LoadScene ("Quiz");
}
のように変更


■■■■■③配列、とそのシャッフル■■■■■
 クイズ問題の回答4択選択肢をシャッフルするために、Unityの配列と配列要素のシャッフルの仕方について以下のサイトを参考にさせてもらいました。

Unityで2次元配列を使う
Listをシャッフルしたり、ランダムに取得したり、先頭から取り出したり【C#】【拡張メソッド】
ランダムなゲームプレイ要素の追加


■■■■■④数値 小数点計算 切り上げ■■■■■
 以下サイトを参考にして、クイズの正答率を計算して表示するために、int型からfloat型に変換して計算、計算後に小数点を切り上げてint型に戻して表示するための処理を作成しました。 小数点を切り上げて整数化する処理には関数CeilToInt(x)を使用。

【Unity】C#で数値変換
C#での型変換
覚えておくと便利なMathf関数
Unityプログラミング基礎 (変数からclassまで)


■■■■■④unityroomに投稿■■■■■
 作成したクイズをWebGLで出力してunityroomに公開する作業は、前回と同じように以下のサイトを参考にして行いました。

【unity】WebGLビルド方法
【unity】unityroomに投稿する方法
作ったゲームを公開する


■■■■■⑤WebGLでの日本語表示■■■■■
 最後に、④で公開してみると日本語が表示されなくなっていたので、下記サイトにある手順を参考にして日本語が表示できるように修正しました。

 WebGLで公開すると、Unityが使うArialフォントが日本語対応できず?、日本語表示できないとあったので、下記サイトを参考に必要フォントを取り込んで表示できるようにしました。  自分はM+フォントの「mplus-1c-regular」をUnityに取り込んで使用しました。 フォント関係を使用するときは権利関係にいろいろ注意とのこと。

 さらについでに、M+フォントを取り込んだ後でもまだ表示されなくなっている日本語が一部残りましたが、それはフォントのサイズまたはフォント表示用の幅・高さを調整することで表示できるようになりました。 けっこうハマって、ウンウン苦しんだのでメモしておきます。

・解説サイト
UnityのWebGLで日本語を表示する
Unityで日本語フォントの使用方法!
Unity+WebGLでビルドした時に日本語が表示されない問題への対応
WebGLで日本語が表示されない時の対処方法

・フォントサイト
Google Noto Fonts
M+ FONTS
M+ FONTS About
PixelMplus(ピクセル・エムプラス) ‥ 8bitビットマップふうフリーフォント



こんだけやって、やっとショボいクイズが公開できました。
疲れた~

0 件のコメント:

コメントを投稿