LoginSignup
3
1

More than 5 years have passed since last update.

初心者のUnityゲーム作り2

Posted at

はじめに

少し時間がたってしまいましたが、2回目です。
前回(初心者のUnityゲーム作り)の続きです。
タイトル画面、スコア、ライフ、ゲームオーバーを作成しました。
前回同様、調べたポイントを残しておきます。

作ったもの

タイトル画面~
title.png
めちゃくちゃシンプルだけど、タイトルあるだけでゲーム感マシマシ。

メイン画面にもスコアとライフを表示しました。
main.png

ゲームオーバー状態。
gameover.png

シーンの遷移

using UnityEngine.SceneManagement; // シーン遷移用

public class GameOverBtn : MonoBehaviour 
{
    public void OnClick()
    {
        SceneManager.LoadScene("Title"); // シーン遷移
    }
}

LoadScene("シーン名")で遷移できます。
ちなみに、LoadSceneAsyncは非同期らしいです。どう使うかはよくわかりません。

ハイスコアの保存

ゲームを終了しても値を保持する方法を調べました。

    PlayerPrefs.SetInt("hiscore", score);
    score = PlayerPrefs.GetInt("hiscore");

SetInt("名前", "値")で保存、GetInt("名前")で取得できます。
他にも以下のような種類があります。

メソッド名 保持する型
GetInt Int
GetString String
GetFloat Float

また、HasKey("名前")でその名前で値を保持しているかbool値で返してくれます。

オブジェクトの取得

    GameObject hoge = GameObject.Find("GameManager");

GameObject.Find("名前")でシーン上のオブジェクトを取得できます。
他にもFindGameObjectWithTag("タグ名")といったものもあります。
おいおいまとめたいです。

他のスクリプトを参照

    GameObject.Find("GameManager").GetComponent<GameManager>().damageMethod();

先述のメソッドで取得したオブジェクトからGetComponent<"スクリプト名">でスクリプトを取得して、その中のpublicのメソッド・変数を参照できます。
あらかじめ、取得するオブジェクトにスクリプトをアタッチしておく必要があります。

オブジェクトの表示・非表示

    gameoverPnl.SetActive(true);

SetActiveを呼ぶだけです。trueなら表示。falseなら非表示です。
注意としては、これで非表示にしたものは先述のFind等で参照できなくなります。あらかじめ変数に確保などが必要です。

ボタンクリック処理

まず、以下のスクリプトを用意します。

public class StartBtn : MonoBehaviour 
{
    public void OnClick()
    {
        SceneManager.LoadScene("Main");
    }
}

このスクリプトを、UIで作成したボタンにアタッチし、ButtonコンポーネントのOnClick欄の+ボタンを押します。
1.png
左下のNoneになっているところを押します。
2.png
呼び出したい処理がアタッチされているオブジェクトを選択します。(ここでは自分自身)
3.png
No Functionになっている部分を押します。
4.png
選択したオブジェクト名の中の呼び出したいメソッドを選択します。
5.png
これで呼び出せるはずです。

UIの配置

完成と思いビルドして実行してみたところ、下のようになってしまいました。
miss.png

……UIのテキストの表示がおかしい!

色々調べまして、ひとまず以下の方法でうまくいきました。

CanvasのCanvas ScalerコンポーネントのUI Scale ModeScale With Screen Sizeに変更する。(変更時に表示が乱れたのでそこは修正しました。)
ui.png

さいごに

今回作ったゲームは一旦ここまでにします。
次は3Dも触ってみたいです。アセットストアとかも。
それではまた次回に。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1