¡¡º£²ó¤Î½èÍý¤Ë¤Ä¤¤¤Æ¤Ï¡¢BulletSelectManager ¥¹¥¯¥ê¥×¥È¤È BulletSelectDetail ¥¹¥¯¥ê¥×¥È¤ÎξÊý¤Ç
¤ª¸ß¤¤¤Î½èÍý¤ò¸Æ¤Ó½Ð¤¹½èÍý¤ò¼ÂÁõ¤¹¤ë¤¿¤á¡¢Î¾Êý¤Î¼ÂÁõ¤¬½ªÎ»¤·¤Ê¤¤¤È¥¨¥é¡¼¤¬½Ð¤ë¾õÂ֤ˤʤê¤Þ¤¹¡£
¡¡if ʸ¤Î¾ò·ï¼°¤È¤·¤Æ¡¢Ìá¤êÃͤò»ý¤Ä¥á¥½¥Ã¥É¤ò¼Â¹Ô¤·¤Æ¼èÆÀ¤¹¤ë¼ÂÁõÎã¤òÄ󼨤·¤Æ¤¤¤Þ¤¹¡£
¡¡À߷פǤâÀâÌÀ¤·¤Þ¤·¤¿¤¬¡¢
³Æ¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤Î¥³¥¹¥È¤Î»Ùʧ¤¤¤ä¡¢
UI (Exp ¤Î¸½ºßÃÍ)¤Ø¤Îɽ¼¨¹¹¿·¡¢
¤Þ¤¿
¥³¥¹¥Èʬ¤Î¥Õ¥í¡¼¥Èɽ¼¨¤Ê¤É¤â¹Ô¤Ã¤Æ¤«¤é¡¢ºÆÅÙ
³Æ¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤Î¥³¥¹¥È¤È Exp ¤Î¸½ºßÃͤò³Îǧ¤¹¤ë½èÍý¤ò¼Â¹Ô¤·¤Þ¤¹¡£
º£²ó¤Ï°ú¿ô¤È¤·¤Æ¼õ¤±¼è¤Ã¤¿¥³¥¹¥È¤ÎÃͤò¡¢
¥á¥½¥Ã¥ÉÆâ¤Ç¥Þ¥¤¥Ê¥¹¤Ë¤·¤ÆÍøÍѤ·¤Æ¤¤¤Þ¤¹¡£
¡¡É¬ÍפˤʤëÀ©¸æ¤Ï¤É¤Î¤è¤¦¤ÊÆâÍƤˤʤ뤫¤ò¹Í¤¨¤Æ¥í¥¸¥Ã¥¯¤ò¹Í¤¨¤Æ¼ÂÁõ¤ò¹Ô¤¤¤Þ¤·¤ç¤¦¡£
¡¡BulletSelectDetail ¥¹¥¯¥ê¥×¥È¦¤Ë¡Ö¥³¥¹¥È¤Î»Ùʧ¤¤¾õÂ֡פò´ÉÍý¤¹¤ëÊÑ¿ô¤òÍÑ°Õ¤·¤Þ¤¹¤Î¤Ç¡¢
¤½¤Á¤é¤òÍøÍѤ¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢
³Æ¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤Î¥³¥¹¥È¤Î»Ùʧ¤¤¾õÂÖ¤¬³Îǧ¤Ç¤¤Þ¤¹¡£
¤³¤ì¤òÍøÍѤ·¤Æ¡¢¥³¥¹¥È¤Î»Ùʧ¤¤ºÑ¤Ç¤¢¤ì¤Ð¥Ü¥¿¥ó¤ò³èÀ²½¤¹¤ë½èÍý¤ò¡¢¥³¥¹¥È¤È Exp ¤Ë¤è¤Ã¤Æ¥Ü¥¿¥ó¤Î¥ª¥ó¡¦¥ª¥Õ¤ÎÀÚ¤êÂؤ¨¤ò¹Ô¤¦¥á¥½¥Ã¥ÉÆâ¤ËÄɲüÂÁõ¤·¤Þ¤¹¡£
¡¡¤³¤ÎÉôʬ¤ÎÀ©¸æ¤Ï¤¦¤Þ¤¯À©¸æ¤·¤Ê¤¤¤È¡¢¶²¤é¤¯
ͽ´ü¤·¤Ê¤¤Æ°ºî¤·¤«µ¯¤³¤µ¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£
£±¤Ä£±¤Ä¤Î½èÍý¤ò¤·¤Ã¤«¤ê¤ÈÇÄ°®¤·¤Æ¥í¥¸¥Ã¥¯¤òÁȤߤ³¤ó¤Ç¤¤¤¯¤³¤È¤¬ÂçÀڤǤ¹¡£
BulletSelectManager.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BulletSelectManager : MonoBehaviour
{
[SerializeField]
private BulletSelectDetail bulletSelectDetailPrefab;¡¡¡¡// BulletSelectDetail ¥¹¥¯¥ê¥×¥È¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¡¢¥×¥ì¥Õ¥¡¥Ö¤Î btnBulletSelect ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¢¥µ¥¤¥ó¤¹¤ë
[SerializeField]
private Transform bulletTran; // ¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤ÎÀ¸À®°ÌÃ֤Ȥ·¤ÆÍøÍѤ¹¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¢¥µ¥¤¥ó¤¹¤ë
private const int maxBulletBtnNum = 4; // ¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤ÎºÇÂç¿ô¡£Äê¿ô¤È¤·¤ÆÀë¸À¤¹¤ë
public List<BulletSelectDetail> bulletSelectDetailList = new List<BulletSelectDetail>(); // À¸À®¤µ¤ì¤¿¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤Î List
[SerializeField]
private BulletDataSO bulletDataSO; // BulletDataSO ¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¢¥µ¥¤¥ó¤¹¤ë
private GameManager gameManager; ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ //¡¡ÊÑ¿ô¤òÄɲä·¤Þ¤¹¡£ ¡¡
/// <summary>
/// ¥Ð¥ì¥Ã¥ÈÁªÂòÍѥܥ¿¥ó¤ÎÀ¸À®
/// </summary>
/// <param name="gameManager"></param>
/// <returns></returns>
public IEnumerator GenerateBulletSelectDetail(GameManager gameManager) {
this.gameManager = gameManager;
for (int i = 0; i < maxBulletBtnNum; i++) {
// ¥Ð¥ì¥Ã¥È¥Ü¥¿¥óÀ¸À®
BulletSelectDetail bulletSelectDetail = Instantiate(bulletSelectDetailPrefab, bulletTran, false);
// TODO ¥Ð¥ì¥Ã¥È¥Ü¥¿¥ó¤ÎÀßÄê¡£¤Þ¤¿¸å¤Ç°ú¿ô¤ËÊѹ¹¤¬¤¢¤ê¤Þ¤¹
bulletSelectDetail.SetUpBulletSelectDetail(this, bulletDataSO.bulletDataList[i]);
// ¥ê¥¹¥È¤ËÄɲÃ
bulletSelectDetailList.Add(bulletSelectDetail);
¡¡¡¡¡¡¡¡¡¡¡¡// 0.25 ÉäÀ¤±½èÍý¤òÃæÃÇ(½çÈ֤˥ܥ¿¥ó¤¬À¸À®¤µ¤ì¤ë¤è¤¦¤Ë¤¹¤ë±é½Ð)
yield return new WaitForSeconds(0.25f);
}
// TODO »ÈÍѤ¹¤ë¥Ð¥ì¥Ã¥È¤Î¾ðÊó¤ò½é´üÀßÄê¡£¸åÄø¡¢°ú¿ô¤òÊѹ¹¤¹¤ë
GameData.instance.SetBulletData(bulletDataSO.bulletDataList[0]);
}
/// <summary>
/// ¤¹¤Ù¤Æ¤Î¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤ËÂФ·¤Æ no ¤Ç¾È¹ç¤ò¹Ô¤¤¡¢ÁõŶÃæ¤È̤ÁõŶ¤Î¾õÂÖ¤òÊѹ¹
/// </summary>
/// <param name="bulletNo"></param>
public void ChangeLoadingBulletSettings(int bulletNo) {
¡¡¡¡¡¡¡¡// ¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤Î List ¤ÎÍ×ÁǤò¤¹¤Ù¤Æ¼è¤ê½Ð¤·¡¢£±¤Ä¤º¤Ä½çÈ֤˽èÍý¤¹¤ë
for (int i = 0; i < bulletSelectDetailList.Count; i++) {
// ¤³¤ÎÍ×ÁǤΥХì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤Î no ¤ÎÃͤ¬ bulletNo (ÁªÂò¤µ¤ì¤¿¥Ð¥ì¥Ã¥È)¤ÈƱ¤¸¤Ç¤¢¤ë¤Ê¤é
if (bulletSelectDetailList[i].bulletData.no == bulletNo) {
// ÁõŶÃæ¾õÂ֤ˤ¹¤ë
bulletSelectDetailList[i].ChangeLoadingBullet(true);
Debug.Log("ÁõŶÃæ¤Î¥Ð¥ì¥Ã¥È¤Î No " + bulletNo);
¡¡¡¡¡¡¡¡¡¡¡¡// ¤½¤ì°Ê³°¤Î no ¤Î¾ì¹ç¤Ë¤Ï
} else {
// ̤ÁõŶ¾õÂ֤ˤ¹¤ë
bulletSelectDetailList[i].ChangeLoadingBullet(false);
Debug.Log("̤ÁõŶ¤Î¥Ð¥ì¥Ã¥È¤Î No " + bulletNo);
}
}
}
/// <summary>
/// ½é´ü¥Ð¥ì¥Ã¥È¤òÁõŶÃæ¤Î¥Ð¥ì¥Ã¥È¤È¤·¤ÆÀßÄê
/// </summary>
public void ActivateDefaultBullet() {
// ¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤Î List ¤«¤éÍ×ÁǤò£±¤Ä¤º¤Ä¼è¤ê½Ð¤¹
foreach (BulletSelectDetail bulletSelectDetail in bulletSelectDetailList) {
// ½é´ü¥Ð¥ì¥Ã¥È¤ÎÀßÄ꤬¤¢¤ë¥Ð¥ì¥Ã¥È¤Î¥Ç¡¼¥¿¤Î¾ì¹ç
if (bulletSelectDetail.isDefaultBullet) {
// ¤½¤Î¥Ð¥ì¥Ã¥È¤òÁõŶÃæ¤Î¾õÂ֤ˤ¹¤ë
bulletSelectDetail.OnClickBulletSelect();
Debug.Log("½é´ü¥Ð¥ì¥Ã¥È¤òÁõŶÃæ¤Î¥Ð¥ì¥Ã¥È¤È¤·¤ÆÀßÄê");
return;
}
}
}
/// <summary>
/// »ÈÍѲÄǽ¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤Î³Îǧ¤È¹¹¿·
/// </summary>
public void JugdeOpenBullets() {
¡¡¡¡¡¡¡¡// ·«¤êÊÖ¤·ÍøÍѤ¹¤ë¾ðÊó¤òÊÑ¿ô¤ËÂåÆþ¤·¤Æ¤ª¤¯
int totalExp = GameData.instance.GetTotalExp();
// ¥Ð¥ì¥Ã¥È¤´¤È¤Ë»ÈÍѲÄǽ¤ÊEXP¤òĶ¤¨¤Æ¤¤¤ë¤«³Îǧ
foreach (BulletSelectDetail bulletData in bulletSelectDetailList) {
// ¥²¡¼¥à½ªÎ»¤Î¾õÂ֤ˤʤ俤é
if (gameManager.isGameUp) {
// ¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤òÈó³èÀ²½¤Î¾õÂ֤ˤ·¤Æ¥¿¥Ã¥×¤Ç¤¤Ê¤¤¾õÂ֤ˤ¹¤ë
bulletData.SwitchActivateBulletBtn(false);
continue;
}
////* ¤³¤³¤«¤é½èÍý¤òÄɲà *////
// ¥³¥¹¥È¤ò»Ùʧ¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤«¡¢Ìá¤êÃͤò»ý¤Ä¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ³Îǧ¤¹¤ë
if (bulletData.GetStateBulletCostPayment()) {
// ¥³¥¹¥È¤ò»Ùʧ¤¤ºÑ¤ß¤Î¾ì¹ç¡¢¤½¤Î¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤Ï¥ª¥ó¤Î¾õÂ֤ˤ¹¤ë
bulletData.SwitchActivateBulletBtn(true);
continue;
}
////* ¤³¤³¤Þ¤Ç *////
// ¥Ð¥ì¥Ã¥È¤ËÀßÄꤵ¤ì¤Æ¤¤¤ë¥³¥¹¥È¤ÎÃͤè¤ê¤â¡¢Exp ¤Î¸½ºßÃͤÎÊý¤¬Â礤¤¤«Æ±¤¸¤Ç¤¢¤ì¤Ð
if (bulletData.bulletData.openExp <= totalExp) {
// ¤½¤Î¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤ò³èÀ²½¤Î¾õÂ֤ˤ·¤Æ¥¿¥Ã¥×¤Ç¤¤ë¤è¤¦¤Ë¤¹¤ë
bulletData.SwitchActivateBulletBtn(true);
} else {
// Exp ¤Î¸½ºßÃͤ¬Ä¶¤¨¤Æ¤¤¤Ê¤¤¥Ð¥ì¥Ã¥ÈÁªÂò¥Ü¥¿¥ó¤òÈó³èÀ²½¤Î¾õÂ֤ˤ·¤Æ¥¿¥Ã¥×¤Ç¤¤Ê¤¤¤è¤¦¤Ë¤¹¤ë
bulletData.SwitchActivateBulletBtn(false);
}
}
}
////* ¤³¤³¤«¤é¥á¥½¥Ã¥É¤ò£±¤ÄÄɲà *////
/// <summary>
/// ÁªÂò¤·¤¿¥Ð¥ì¥Ã¥È¤Î¥³¥¹¥È¤Î»Ùʧ¤¤¤È¤½¤ì¤Ë´ØÏ¢¤¹¤ë½èÍý
/// </summary>
/// <param name="costExp"></param>
public void SelectedBulletCostPayment(int costExp) {
// TotalExp(Exp ¤Î¸½ºßÃÍ) ¤è¤ê¡¢ÁªÂò¤·¤¿¥Ð¥ì¥Ã¥È¤Î¥³¥¹¥È¤ò¸º»»
GameData.instance.UpdateTotalExp(-costExp);
// ²èÌ̤ΠExp ɽ¼¨¸º»»¸å¤ÎÃͤ˹¹¿·
gameManager.uiManager.DisplayTotalExp(GameData.instance.GetTotalExp());
// ¥³¥¹¥È¤ÎÃÍ¤Î¥Õ¥í¡¼¥Èɽ¼¨¤òÀ¸À®
gameManager.uiManager.CreateFlotingMessageToExp(-costExp, FloatingMessage.FloatingMessageType.BulletCost);
// »ÈÍѲÄǽ¥Ð¥ì¥Ã¥È¤Î³Îǧ¤È¹¹¿·
JugdeOpenBullets();
}
////* ¤³¤³¤Þ¤Ç *////
}
¡¡¥¹¥¯¥ê¥×¥È¤òºîÀ®¤·¤¿¤é¥»¡¼¥Ö¤·¤Þ¤¹¡£