UnityではじめるC#4日目

学習内容

  • 物理パズルの作成
  • PlayerPrefsの使い方

◇物理パズルの作成

やったこととしては、ゲームの要素となるボール、壁3種類(移動可能な壁、移動歩かな壁、ゲーム外検出壁)、ゴールをゲームオブジェクトとしてシーン上に配置して、Rigidbody2Dやコライダーなどのコンポーネントをアタッチ。
ゲームのリセット機能を付けたり、ボールやシーン上に配置する壁はPrefab化しておいて、新しいステージなどを作成する際やリセット時にオブジェクトを配置できるようにしたりしました。
また、ステージ選択画面を作ったりと、今までやってきたこと(Unity5の教科書も含めて)を総動員してゲームを形にしていきました。
なので、内容としては今までやってきたことの復習といった感じだったので、細かいことは割愛します。

◇PlayerPrefsの使い方

復習的な内容だったと話したばかりですが、どこまでクリアしたのかを記録できる機能をつけるために、PlayerPrefsの使い方を新しく学習したので、内容をまとめておこうと思います。

ステージセレクト時にいきなり先のステージに進むことが無いよう、クリアしたステージを確認し、直前のステージがクリアされていれば選択できるような機能を実装しました。ただ、そのためにはクリアしたステージの情報を記録する仕組みが必要です。
通常の変数はプログラムを終了すると情報が消えてしまうので、ファイルのように終了後も残すためには別の方法を使う必要がありますが、そのため仕組みとしてPlayerPrefsがUnityでは用意されています。
これを使うと、各OSの特定の場所にデータを保存してくれます。
使い方としてはPlayerPrefsクラスの関数を使って書き込みと読み出しを行うことが出来ます。
読み書きにはキーと呼ばれる値に識別するための名前と値となる数値や文字列をセットにします。具体的には以下のようにします。

PlayerPrefsクラスのメソッドには値を設定するSet○○○と、値を取得するGet○○○があって、それぞれfloat型用とint型用、string型用の三種類が用意されています。そのほかキーと値を削除するDeleteAll、DeleteKeyなどもあります。Set○○○で書き込んだ値はアプリの終了時にファイルに保存されますが、クラッシュすることもあるので、PlayerPrefsに用意されているSave関数を使えば確実に保存できます。
これらを使って、ゲームのクリア時にデータをセーブし、先のステージが解放されるような機能を実装しました。
ただ、いろいろ実験してみて理解を深めようとしてみたのですが、いまいち使い方が理解できていないので、もう少しリファレンス読んでみたり、ほかの技術ブログをのぞいてみたりしたいと思います。

・memo

Invoke関数:第一引数に指定した名前の関数を第2引数で指定した時間後に呼び出す関数。

そんなこんなで、完成したゲームがこちら。

これでUnityではじめるC#終了です!
3日程度で終了できましたが、学ぶことが多く、密度の濃い3日でした!
「脱出ゲーム」と「物理パズル」という2大定番ゲームの作り方を勉強できたのもかなり大きいです。
次はUnityの寺子屋を勉強しようと思います。
その傍らで、今月中を目標に自作アプリを作ってリリースしたいと思っているので、どんなアプリにするのか企画もしていきたいと思います。
それでは今日はこの辺で。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です