注意
本記事で掲載されている動作の実装方法及びプログラムのソースコードは最適な方法ではない可能性があります。今後不具合等が判明した場合には修正及び改良をおこなう可能性があります。
また今後自分で同機能を実装する場合の参考にする可能性もあるためソースコードだけではなく説明しつつ記事を進めていきます。
Unityによる自作ゲーム開発進捗その34になります!
今回はUIの見た目に手を加えました。
機能面に変更はありませんが、デバッグ情報が出力されていたためソースコードを少し修正しています。
既存のスクリプトを1つ更新します。
以下に動画でのコピー用にソースコードを掲載しています。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
public class TimerSystem : MonoBehaviour{
private const float m_defense_time = 300.0f;
private const int m_player_base_count = 9;
private TextMeshProUGUI m_time_object;
private TextMeshProUGUI m_player_score;
private TextMeshProUGUI m_enemy_score;
private float m_time_count = 0.0f;
private float m_time_remain = 0.0f;
private int m_player_base;
public void PlayerScoreUpdate() {
m_player_base -= 1;
m_player_score.text = m_player_base.ToString();
}
private void Start() {
m_time_object = transform.GetChild(0).GetComponent<TextMeshProUGUI>();
m_player_score = transform.GetChild(1).GetComponent<TextMeshProUGUI>();
m_enemy_score = transform.GetChild(2).GetComponent<TextMeshProUGUI>();
m_time_remain = m_defense_time;
m_time_object.text = string.Format("{0:00}:{1:00}", (int)m_time_remain / 60, (int)m_time_remain % 60);
m_player_base = m_player_base_count;
m_player_score.text = m_player_base.ToString();
}
private void FixedUpdate() {
m_time_count += Time.deltaTime;
if(m_time_count >= 1.0f) {
m_time_remain -= m_time_count;
m_time_count = 0.0f;
m_time_object.text = string.Format("{0:00}:{1:00}", (int)m_time_remain / 60, (int)m_time_remain % 60);
}
}
}
/*
[規則]
p_ 外部アクセス
m_ メンバー変数
l_ ローカル変数
a_ 引数
[説明]
[バージョン]
2021-08-06 時間制限システムの追加
2021-12-02 デバッグ出力の削除
[タスク]
*/
変更箇所は戦闘開始前画面のキャラクター枠となり、UI変更に伴いキャラクター設置位置も変更しています。
変更後の左下部分には今後出撃先マップの説明や難易度等を表示するように考えています。