【感想も】『Unity チュートリアル』「2Dシューティング」 学習記録7

unity3d.com

序文

Unityチュートリアル「2Dシューティング」7日目。

www.youtube.com

ここまでいかなくても、ユニティちゃんをMMD的に簡単に動かせないのかなーと思って少し調べてみたのだけど、あんまりやっている人はいないようだ。
あんまりいないということはきっと難しいのだろう。

ユニティちゃん界隈ってあんまり盛り上がってないよね。

GitHub

github.com

進捗

  • ゲーム制作編
    • Waveを5個にする、スコアの実装

(学習時間:2時間)

コード実装部分

\2d-shooting-game\assets\scripts\score.cs

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Score : MonoBehaviour
{
  // スコアを表示するUI
  public GameObject scoreUI;

  // ハイスコアを表示するUI
  public GameObject highScoreUI;

  // スコア
  private int score = 0;

  // ハイスコア
  private int highScore = 0;

  // PlayerPrefsで保存するためのキー
  private string highScoreKey = "highScore";

  void Start()
  {
    PlayerPrefs.DeleteAll();
    Initialize();
  }

  void Update()
  {
    // スコアがハイスコアより大きければ
    if (highScore < score)
    {
      highScore = score;
    }

    // スコア・ハイスコアを表示する
    scoreUI.GetComponent<Text>().text = score.ToString();
    highScoreUI.GetComponent<Text>().text = "HighScore:" + highScore.ToString();
  }

  // ゲーム開始前の状態に戻す
  private void Initialize()
  {
    // スコアを0に戻す
    score = 0;

    // ハイスコアを取得する。保存されてなければ0を取得する
    highScore = PlayerPrefs.GetInt(highScoreKey, 0);
  }

  // ポイントの追加
  public void AddPoint(int point)
  {
    score = score + point;
  }

  // ハイスコアの保存
  public void Save()
  {
    // ハイスコアを保存する
    PlayerPrefs.SetInt(highScoreKey, highScore);
    PlayerPrefs.Save();

    // ゲーム開始前の状態に戻す
    Initialize();
  }
}

実行結果

www.youtube.com 普段アクションゲームやらないおっさんがガチプレイしてみた

感想

スコアとハイスコアを表示する機能を実装して完成。

チュートリアルではスコアの表示にGUI Textコンポーネントを使用していたのだけど、GUI Textコンポーネントは現在非推奨でかつ実際使ってもうまくいかなかった(これは自分のせいかも)のでCanvasのUI機能を使って実装した。
最低限、GetComponent()メソッドの使い方を知っておく必要があるので、Unityをさわる人向けの教材としてはあんまりよくないかもしれない。

あとは個人的な注意力の問題かもしれないけど、全体的に説明が簡素で、見出しとスクリーンショットの間の目立たない一行に重要な内容が書かれていて、見落とすと動かない!みたいな罠があるので入門者がやりきるのは意外と難しいかもね。

Unity入門者向けの書籍はいっぱいあるので、それを1冊こなしてから挑戦するぐらいがちょうどいい難易度かなぁという気がしました。

次は何をやろうか考え中。

カロリーメイトください。

BGM

たいにーたいにー / BUGY CRAXONE

www.youtube.com