ぼくの息抜き

ぼくの息抜き

気ままな二人が記事を書くことで息抜きしていくブログ

CSS MenuMaker

unityゲームプログラミング 雨を降らすゲームを作るPart9 -放置ゲームの転生を導入2-

f:id:bokunoikinuki:20180621201305p:plain

前回の続きで放置ゲームでおなじみの転生要素を作っていく。

転生の確認画面を作る。

転生を完成させる

デザインを作るだけなので、こんな感じに。

f:id:bokunoikinuki:20180630180836p:plain

木のスクリプトと色々被ってボタンが押せない現象がおこった。

色々いじったが、理由がよくわからなかった。

とりあえずcanvas自体をもう一つ作ってcanvas自体のOrder in Layerをもう一つのものよりも数字あげた。

f:id:bokunoikinuki:20180630192731p:plain

前回にすでに転生ボタンを押したらこの画像が出てくるようになっているので、次はボタンやテキストをスクリプトでつなげていく。

つなげた。

きちんと転生ボタンを押すと転生確認画面が出てきて、いいえを押すと消え、はいを押すと転生するようになった。

次はアップグレード画面だ。

転生後にアップグレード画面作り

アップグレード画面作成の思いつく手順洗い出し。

  • 新しいアップグレードSceneの簡易デザイン作り
  • GameSceneから転生ボタンでアップグレードSceneに遷移できるように
  • アップグレードSceneからGameSceneに遷移できるように
  • 転生時ポイントも追加されるように
  • アップグレードのスクロール実装
  • スクロール画面からParticle Systemの数値いじれるように実装
  • いじれる数値をたくさん増やす
  • デザインを整える
  • 完成!

一つずつやっていこう

このRainGameの遷移はこんなイメージ。

f:id:bokunoikinuki:20180701091550j:plain

ということで新しくSceneを作る。

アップグレードSceneはParticleSystemの数値を色々変えられるこのゲームの一番の見所だ。

意味のあるものから全く意味のないものまで多様なパラメーターを用意しようと思うので、スクロールを導入する。

とりあえずまずは簡易なデザインから作っていく。

f:id:bokunoikinuki:20180701091816j:plain

アップグレード画面を別で作ろうと思ったのは、結局アップグレード関連の数値は別管理した方が後々追加も楽だと思ったからだ。

数値もpublic staticで他からいじれるようにするつもり。

アップグレードSceneデザイン

f:id:bokunoikinuki:20180701093802p:plain

こんな感じで良いかと思う。

細かいデザインは最後に整える。

他にも追加したい要素が増えるかもしれないからだ。

行き当たりばったりのゲーム作成。本当はあんまりよくないんだろうけど…

まぁ、まずは作りたいものが作れるようになるのが先決。

次はScene遷移

  • GameSceneから転生ボタンでアップグレードSceneに遷移できるように
  • アップグレードSceneからGameSceneに遷移できるように

先にアップグレードSceneからGameSceneに遷移できるようにしようとしたんだが、なんでかできない。

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

using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class UpgradeManager : MonoBehaviour {

	// Use this for initialization
	void Start () {
		Button gameStartButton = GameObject.Find ("GameStartButton").GetComponent<Button> ();
		gameStartButton.onClick.AddListener (LoadGameScene);
		
	}

	void LoadGameScene () {
		SceneManager.LoadScene ("GameScene");
		print ("a");
	}
}

一つのボタンだけ、シーン遷移させるシンプルなスクリプトなのだが、

Scene 'GameScene' couldn't be loaded because it has not been added to the build settings or the AssetBundle has not been loaded.
To add a scene to the build settings use the menu File->Build Settings...
UnityEngine.SceneManagement.SceneManager:LoadScene(String)
UpgradeManager:LoadGameScene() (at Assets/Scripts/UpgradeManager.cs:18)
UnityEngine.EventSystems.EventSystem:Update()

こうエラーがでる。

f:id:bokunoikinuki:20180701095443p:plain

笑った。

『GameScene』ではなく『GameSnece』になっていた。

笑った笑った。

名前を戻したら無事遷移した。

おっけい。問題なくGameSceneからUpgradeSceneへの遷移も実装できた。

余裕余裕。

次はアップグレードポイントがゲットできるように

  • 転生時ポイントも追加されるように

public static intを使ったら超余裕。一瞬。楽々。

staticやpublicの時に変数名変えたほうがわかりやすそうだなと思った。

何か決まりがあると思いきやあんまり決まったものはなさそう。

参考記事:C# - C#でのメンバ変数名とクラス名の重複について(110948)|teratail

変数はcamel,関数はPascalを意識しているが、public,staticは今の所分けなくていいな。

privateだけ最初に_をつけるような記述があったが、確かにprivateならわかりやすいようにつけてもいいかもしれない。

初、スクロール実装

  • アップグレードのスクロール実装

参考記事:UnityのuGUIでスクロールビューを作る - テラシュールブログ

参考記事:uGUIのScrollViewを使いこなす7つのTips - Programming Serendipity

ちょっと話は違うのだ、背景のサイズを決める時にPanelを使うか、Imageを使うか何が良く違うのか気分で変えていたので調べてみると、そんなに差はなさそう。

参考記事:uGUIのRaw Image、Image、Panel、Mask

 

すげー、テラシュールブログさんを参考に作ったらめちゃくちゃ簡単にスクロール画面が実装できた。すごい。

f:id:bokunoikinuki:20180701121640p:plain

縦スクロールする場合は

Scroll RectのHorizontalのチェックを外すと横方向に引っ張れなくなる。

f:id:bokunoikinuki:20180701122234p:plain

いやー、めっちゃ簡単。

これで難関だと思われたスクロールを想像を大きく超えた簡単さで実装できた。

unityすごい。

次どういう風に

スクロール画面からParticle Systemの数値いじれるように実装

をしようか悩む。

一旦ホワイトボードで思考してからスクリプトをいじってみることにする。

今回で終わるかと思いきや、次回にまた続く転生要素実装。

では。