Googleインディゲームにゲームを出したくてUnityの勉強をしています。
そこでスイカゲームを作成してみることにしました。
Unityでスイカゲームを作る①の続きになっています。 各プログラムの処理を詳細にみていきたいと思います。 参考サイトのプログラムに自分なりにこういう処理かな?とコメントをつけました。
参考サイト
スイカゲームっぽい落ち物ゲーを作ってみる。 こちらのサイトを参考にしました。
GameManager
using UnityEngine;
using UnityEngine.UI;
public class GameManager : MonoBehaviour
{
public static GameManager Instance { get; private set; }
public bool isNext { get; set; }
public int MaxSeedNo { get; private set; }
//[SerializeField]
// Unityエディターのインスペクター上で、そのクラスのインスタンスを編集可能になる
[SerializeField] private seed[] seedPrefab;
[SerializeField] private Transform seedPosition;
[SerializeField] private Text txtScore;
//処理開始-------------------------------------------------------------------------------------------
//private int totalscore;
public static int totalscore;
void Start()
{
//変数の初期化-------------------------------------------------------------------------
Instance = this;
isNext = false;
MaxSeedNo = seedPrefab.Length;
totalscore = 0;
//関数コール-------------------------------------------------------------
SetScore(totalscore);//点数表示
CreateSeed();//果物作成
}
void Update()
{
if (isNext)
{
isNext = false;
//指定した時間に関数コール
Invoke("CreateSeed", 2f);// invoke("呼び出す関数",秒数);
}
if (line.gameState == "gameclear")//もしゲーム終了なら
{
Debug.Log("GameOver2"); //コンソールログにGameOver2と表示
line.gameState = "gameend";
}
//---------------------------------------------------
}
private void CreateSeed()
{//果物を作成
int i = Random.Range(0, MaxSeedNo - 2);//0~MaxSeedNo – 2 の乱数表示
seed seedIns = Instantiate(seedPrefab[i], seedPosition);//オブジェクトをコピー
seedIns.seedNo = i;
seedIns.gameObject.SetActive(true);
}
public void MergeNext(Vector3 target, int seedNo)
{
seed seedIns = Instantiate(seedPrefab[seedNo + 1], target, Quaternion.identity, seedPosition);
seedIns.seedNo = seedNo + 1;
seedIns.isDrop = true;
seedIns.GetComponent<Rigidbody2D>().simulated = true;
seedIns.gameObject.SetActive(true);
totalscore += (int)Mathf.Pow(3, seedNo);
SetScore(totalscore);
}
private void SetScore(int score)
{//点数を表示
txtScore.text = score.ToString();
}
}
サイトのプログラムを参考にゲームオーバー時にコンソールに表示する処理と、点数をセットする処理を追加しています。
ResultManager】
ゲーム終了時点数を表示する処理を本を参考に作りました。using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ResultManager : MonoBehaviour
{
public GameObject scoreText;
// Start is called before the first frame update
void Start()
{
//点数を表示
scoreText.GetComponent<Text>().text = GameManager.totalscore.ToString();
Debug.Log("点数" + scoreText.GetComponent<Text>().text);
}
// Update is called once per frame
void Update()
{
}
}
その他
感想
当初、本を参考にスイカゲームを作り始めたところ、ランダムに果物を出せるものの 1回出したら同じものが二度とでなかったりして、サイトを探しました。参考サイトは細かく処理手順を書いてくれていたのでわかりやすくデータのダウンロードも させてくれるため、とても勉強になりました。
ゲームの形にしたいので開始画面や結果を表示させたいと思ったときは本が参考になりました。 これを書いている時点ではまだ、完全完成してはいないので、完成後細かく処理内容などをまとめて ブログにしたいと思います。


コメント