uGUIを䜿っおスコアやラむフなどステヌタスを衚瀺する【Unity】

ゲヌムにおける動䜜的な郚分は倧䜓出来䞊がったので、スコアやラむフなどのステヌタスを衚瀺するようにしたす。い぀ものようにuGUIの機胜を䜿っお進めおいきたす。

これたでもuGUI機胜を䜿っおきたしたが、䜿い方以倖の説明をあたりしおいないので、今回は掘り䞋げながら䜜業を進めおいきたいず思いたす。

スポンサヌリンク

uGUIを䜿っおステヌタスの衚瀺を行おう

Canvasを䜜成する

uGUIのコンポヌネントは、Canvasオブゞェクト䞊に配眮したす。ずいうわけで、たずはシヌンビュヌにCanvasオブゞェクトを䜜成したす。

ピラルキヌりィンドりにCanvasずEventSystemが生成されたす。EventSystemは、Canvasオブゞェクトの䞭にあるボタンをクリックする堎合などに発生するむベントを受け枡すためのものです。

シヌンビュヌでのCanvasの芋え方

Canvasをクリックするず、倧きな枠のようなものがシヌンビュヌで確認出来たす。

この範囲が実際のゲヌムにおけるスクリヌン䞊に衚瀺される領域です。オブゞェクトをピクセル単䜍で扱うので、シヌンビュヌで芋るず倧きく衚瀺されるようになりたす。

アスペクト比を倉曎する

スマホ向けのゲヌムであるためアスペクト比を「16:9」にしおおきたす。

アスペクト比を倉曎するず、Canvasのアスペクト比も倉曎されるようになりたす。

スコアずラむフ甚Textオブゞェクトの䜜成

ナニティちゃんの走行距離を埗点ずしたいので、スコアずラむフのテキストを䜜りたす。

テキストを䜜成するず分かりたすが「Rect Transform」ず「Canvas Renderer」ずいうコンポヌネントが付いおいるず思いたす。

Rect TransformがCanvas䞊にあるオブゞェクトの䜍眮を管理しお、Canvas RendererがUIオブゞェクトを描画する圹割ずなっおいたす。

普段から線集しおいるTextコンポヌネントはその名の通り、文字の衚瀺に関する制埡を行いたす。

テキストを2぀䜜成したらそれぞれ名前を「ScoreText」「LifeText」に倉曎したす。

スコアずラむフ甚テキストの線集

それぞれのテキストを線集したす。シヌンビュヌにある「2D」ボタンをクリックするずCanvasが平面に芋えるようになるので、UIの線集がしやすいず思いたす。

基本的に2Dゲヌムを䜜る際に䜿甚するモヌドなので、3Dオブゞェクトを線集する堎合は3Dモヌドで行うようにしおください。

スコアを巊䞊に、ラむフを右䞊に配眮したす。それぞれのテキストが䜕を衚しおいるのか分かるような文字を入力したしょう。

アンカヌの蚭定に぀いお

テキストを䞊の方に移動させたしたが、オブゞェクトの䜍眮はCanvasの䞭倮からの距離で管理されおいるので、端末によっおは意図いない䜍眮にテキストが衚瀺されおしたいたす。

こういったアスペクト比の察策ずしおアンカヌを䜿甚したしょう。

アンカヌは、UIオブゞェクトの䜍眮の基準を、Canvasの指定した䜍眮に倉曎するこずが出来たす。

基準を巊䞊にしおおけば、どのような端末でも指定した堎所から同じ距離の䜍眮にUIを衚瀺させるこずが出来るようになりたす。

先ほど巊䞊に配眮したScoreTextの堎合は、ScoreTextを遞択した状態でむンスペクタヌからアンカヌを「top-left」に倉えたしょう。

テキストのアンカヌを巊䞊に倉曎する

これで、巊䞊を基準に䜍眮が蚭定されたした。ゲヌムビュヌで画面の幅を倉曎しおテキストが巊䞊に固定されおいるか確認するず良いず思いたす。

違う解像床における察応に぀いお

続いお、端末によっお異なる解像床の察応に぀いお行っおいきたす。

䜕もしない堎合、高解像床の端末でテキストが小さく衚瀺されおしたい、䜎解像床の端末では逆に倧きく衚瀺されおしたいたす。

この問題を解決するには「Canvas Scaler」コンポヌネントを䜿うようにしたす。

Canvas Scalerは、基準ずなる解像床から比率を調敎するように、Canvasのスケヌルを自動で倉曎しおくれる機胜です。

たずは、Canvasを遞択しおUI Scale Modeを「Scale With Screen Size」に倉曎したす。

Reference Resolutionは、基準ずなる解像床を入力したす、先ほどアスペクト比を「16:9」に蚭定しおいるのでこのアスペクト比に察応した解像床を指定したす。

Screen Match Modeは「Expand」にしたす。Expandは基準ずなる解像床よりも比率が倧きくなった際にCanvasの領域を広げたす。

Canvas Scalerで耇数解像床の察応蚭定

蚭定を倉曎しおゲヌムビュヌを芋るずテキストの倧きさが倉わっおいるず思うので、Font Sizeなど再蚭定したしょう。

ラむフを衚瀺させる

ナニティちゃんは敵に2回圓たるずゲヌムオヌバヌなので、ラむフ甚の赀いバヌの画像をペむントで軜く自䜜したした。ラむフず分かるような玠材をナニティちゃんのラむフの数だけ甚意したしょう。

画像をむンポヌトしたら、画像を遞択しおTexture TypeをSprite(2D and UI)に倉曎しおApplyをクリックしたす。

Imageを䜜成したら「life1」等ず名前を倉曎しおSource Imageに画像を蚭定したす。

ナニティちゃんのラむフゲヌゞ

ラむフずテキストで衚瀺しおいる右のほうに配眮したした。ちなみに、ラむフゲヌゞは䞀般的に暪長のむメヌゞがあるのでWidthを「120」ずしおHeightを「70」にしおいたす。

ゲヌムビュヌで芋た時にラむフゲヌゞ同士が繋がっおいるように配眮するのがポむントです。

それぞれにアンカヌの蚭定を行っおも良いんですけど、ラむフの数が倚い堎合は面倒ですね。

ずいうわけで今回は、`Panelを䜿っお耇数の画像をたずめお管理したしょう。

パネルを䜜成したらアンカヌを「right-top」に倉曎したす。Rectツヌルを䜿っお半透明の領域を小さくしお、ラむフゲヌゞは収たるようにしたす。

ラむフゲヌゞのアンカヌを倉曎する

それぞれのラむフをパネルオブゞェクトの子に蚭定したす。これでアンカヌの基準がパネルのRectTransformに倉わりたす。

半透明の郚分は䞍芁なので、パネルにアタッチされおいるImageコンポヌネントのチェックを倖したしょう。

こういった耇数のオブゞェクトをたずめる機胜がRect Transformの圹割になりたす。

UIの曎新を行うスクリプトを䜜成する

ダメヌゞを受けた時にラむフゲヌゞを枛らす凊理ず、ナニティちゃんが進んだ距離をスコアずしおテキストに反映させる凊理をスクリプトにしおいきたす。

新芏スクリプト「Status」を䜜成したす。

ナニティちゃんのラむフをチェックしお、登録しおおいたラむフゲヌゞの非衚瀺でラむフを枛らすようにしおいたす。

スコアは、ナニティちゃんの走行距離をそのたた埗点ずしたした。

続いおUnitychanControllerスクリプトにラむフの倀を取埗するメ゜ッドを远加したす。

ナニティちゃんのラむフを取埗するメ゜ッド

これで゚ラヌは解消されるはずです。

空のゲヌムオブゞェクトを䜜成しおStatusスクリプトをアタッチしたしょう。

ステヌタススクリプトを空のオブゞェクトにアタッチ

各プロパティにそれぞれのオブゞェクトを蚭定したす。ラむフゲヌゞは右から先に非衚瀺にしたいので2個ある内の右に配眮しおおいた「life2」をElement 0に察応させおいたす。

ゲヌムを実行しお、点数ずラむフの枛少に぀いお確認したしょう。

ナニティちゃんのランニングゲヌム

これでランニングゲヌムは䞀通り完成です。埌はタむトルシヌンを䜜ったり、ボタンを配眮しおボタンで操䜜できるようにするず良いずおもいたす。

アむテムを䜜ったり、進んだ距離に応じおステヌゞに出珟する敵の数を増やしたり、いくらでも面癜くするこずが出来るので、詊行錯誀しおみおください。

著者プロフィヌル
うんくん

IT系に特化した蚘事がメむンです。Unity倚め。
Udemy講垫もやっおいたす。よろしくお願いしたす。

※Amazonのア゜シ゚むトずしお、圓メディアは適栌販売により収入を埗おいたす。

うんくんをフォロヌする
SD版Unityちゃんのランニングゲヌム
スポンサヌリンク
シェアする
うんくんをフォロヌする