10日目 Unity 2Dゲームの作成開始!
こんにちは( ´∀` )
やっと本格的に製作が始まりますね。なんだかんだ毎日少しずつ触っているせいか、スクリプトの構造を1回の説明で理解できるようになってきました…!
本日学んだこと(復習もあるよ)
1.あるオブジェクトの中身を変更したいとき
Ex.Text public Text stagetext;
//これをオブジェクトに貼ると、インスペクター上にオブジェクトを貼り付けられるようになる。そこに貼ったオブジェクトの中のTextをstagetextという変数で扱うよという意味です。
2.textの中身を変更する方法
これは1の続きになりますが、今回は2つの方法を挙げます。
①int型のものをstring型に変換して代入したいとき
stageText.text = currentStage.ToString(); //currentStageはもともとint型
②int型のものとstring型のものを両方使いたい場合
stageText.text = string.Format("Stage:{0}", currentStage+1); //string.Formatを使えば、このようにもともとint型であっても組み合わせられる。
3.他のスクリプトの中身(関数)などを使うとき
public StageUIManager stageUI; ////これをオブジェクトに貼ると、インスペクター上にオブジェクトを貼り付けられるようになる。そこに貼ったオブジェクトの中のStageUIManagerというスクリプトをstageUIという変数で受け取るという意味です。
4.敵とのエンカウント設定
int encountTable = { -1, -1, 0, -1, 0, -1 }; //(-1なら遭遇しない、0なら遭遇)
//宣言と初期化を同時に行っているためnew intは不要です
public void OnNextButton()
{
if(encountTable[currentStage] == 0) //ステージ1の時、encountTable[1]となる
{
Debug.Log("敵に遭遇");
}
}
5.モンスターの表示
アセットストアからインポート→ヒエラルキーに入れて位置など調整→Prefabとして保存(Projectにドラッグ&ドロップ)
public GameObject enemyPrefab; //作ったPrefabをゲームオブジェクトとして、enemyprefabという関数で受け取る
else if(encountTable[currentStage] == 0) //4でエンカウントを設定したが、そのタイミングでEncountEnemyが行われるよという意味
{
EncountEnemy();
}
void EncountEnemy()
{
Instantiate(enemyPrefab); //読み込んだ画像の表示
}
6.モンスター遭遇時にボタンを消す方法
A(ボタンを管理するスクリプト)
public GameObject nextButton;
public GameObject goBackButton;
public void HideButtons() //ボタンを非表示にする関数
{
nextButton.SetActive(false);
goBackButton.SetActive(false);
}
public void ShowButtons() //ボタンを表示する関数
{
nextButton.SetActive(true);
goBackButton.SetActive(true);
}
public StageUIManager stageUI;(Aのスクリプト)
void EncountEnemy()
{
stageUI.HideButtons(); //Aの関数を使用する
Instantiate(enemyPrefab); //Prefabの表示
}
感想
本日学んだ範囲は今までの範囲を実際に使いこなすというもので、他のスクリプト等の取得や関数の結びつきなど分かりやすく感じました。(一から作るのとは全く違いますが)
少し成長を感じております!スクリプトをデバッグで学ぶだけでなく、実際にゲームの画面が出来上がっていくのをみると、作業もより集中して行うことができますね…!
勉強時間合計:19h