¡¡À߷פ˴ð¤Å¤¤¤Æ¡¢¥í¥¸¥Ã¥¯¤ò¹Í¤¨¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¤¤¤Þ¤Þ¤Ç¤Î¼ÂÁõ¤¬¤½¤Î¤Þ¤ÞÉü½¬ºàÎÁ¤È¤·¤Æ³èÍѤǤ¤Þ¤¹¡£
¡¡ºÇ½é¤Ë¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤òÍøÍѤǤ¤ë¾õÂ֤ˤ·¤Þ¤¹¡£
¤½¤Î¸å¡¢¤½¤Î¾ðÊó¤ò³èÍѤ·¤¿½èÍý¤Î¥á¥½¥Ã¥É¤òºîÀ®¤¹¤ë¤³¤È¤òÌÜɸ¤Ë¤·¤Þ¤·¤ç¤¦¡£
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 ¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¢¥µ¥¤¥ó¤¹¤ë
////* ¤³¤³¤«¤éÊÑ¿ô¤ÎÀë¸À¤òÄɲà *////
[SerializeField]
private ElementDataSO elementDataSO;¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡ // ElementDataSO ¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¢¥µ¥¤¥ó¤¹¤ë
////* ¤³¤³¤Þ¤Ç *////
private GameManager gameManager;¡¡
/// <summary>
/// ¥Ð¥ì¥Ã¥ÈÁªÂòÍѥܥ¿¥ó¤ÎÀ¸À®
/// </summary>
/// <param name="gameManager"></param>
/// <returns></returns>
public IEnumerator GenerateBulletSelectDetail(GameManager gameManager) {
this.gameManager = gameManager;
////* ¤³¤³¤«¤é½èÍý¤òÄɲà *////
// BulletDataSO ¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Î¥Ç¡¼¥¿¤«¤é¡¢ÍøÍѼԤμïÎब Player ¤Î¥Ð¥ì¥Ã¥È¤Î¾ðÊó¤À¤±¤òÂåÆþ¤¹¤ë List ¤òÍÑ°Õ¤¹¤ë
List<BulletDataSO.BulletData> playerBulletDatas = new List<BulletDataSO.BulletData>();
// ¥Ð¥ì¥Ã¥È¤ÎÍøÍѼԤμïÎब Player ¤Î¥Ð¥ì¥Ã¥È¤Î¾ðÊó¤À¤±¤òÃê½Ð¤·¤Æ List ¤òºîÀ®¤¹¤ë
playerBulletDatas = bulletDataSO.bulletDataList.Where(x => x.liberalType == BulletDataSO.LiberalType.Player).ToList();
////* ¤³¤³¤Þ¤Ç *////
for (int i = 0; i < maxBulletBtnNum; i++) {
// ¥Ð¥ì¥Ã¥È¥Ü¥¿¥óÀ¸À®
BulletSelectDetail bulletSelectDetail = Instantiate(bulletSelectDetailPrefab, bulletTran, false);
////* ¤³¤³¤«¤é½èÍý¤ò½¤Àµ *////
// TODO ¥Ð¥ì¥Ã¥È¥Ü¥¿¥ó¤ÎÀßÄê¡£¤Þ¤¿¸å¤Ç°ú¿ô¤ËÊѹ¹¤¬¤¢¤ê¤Þ¤¹
bulletSelectDetail.SetUpBulletSelectDetail(this, playerBulletDatas[i]); // <= ¡ù¡¡¡°ú¿ô¤òÊѹ¹¤·¤Þ¤¹
////* ¤³¤³¤Þ¤Ç *////
// ¥ê¥¹¥È¤ËÄɲÃ
bulletSelectDetailList.Add(bulletSelectDetail);
¡¡¡¡¡¡¡¡¡¡¡¡// 0.25 ÉäÀ¤±½èÍý¤òÃæÃÇ(½çÈ֤˥ܥ¿¥ó¤¬À¸À®¤µ¤ì¤ë¤è¤¦¤Ë¤¹¤ë±é½Ð)
yield return new WaitForSeconds(0.25f);
}
////* ¤³¤³¤«¤é½èÍý¤ò½¤Àµ *////
// »ÈÍѤ¹¤ë¥Ð¥ì¥Ã¥È¤Î¾ðÊó¤ò½é´üÀßÄê
GameData.instance.SetBulletData(playerBulletDatas[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();
}
////* ¤³¤³¤«¤é¥á¥½¥Ã¥É¤ò£±¤ÄÄɲà *////
/// <summary>
/// ElementType¤«¤éSprite¼èÆÀÍÑ
/// </summary>
/// <param name="elementType"></param>
/// <returns></returns>
public Sprite GetElementTypeSprite(ElementType elementType) {
// elementDataList ÊÑ¿ô¤ÎÍ×ÁǤò£±¤Ä¤º¤Ä½çÈÖ¤¤¤Ë¼è¤ê½Ð¤·¤Æ¡¢elementData ÊÑ¿ô¤ØÂåÆþ
foreach (ElementDataSO.ElementData elementData in elementDataSO.elementDataList) {
// ¸½ºßÂåÆþ¤µ¤ì¤Æ¤¤¤ë ElementData ¤Î ElementType ¤È°ú¿ô¤Î elementType ¤¬Æ±¤¸¤Ç¤¢¤ë¤Ç¤¢¤ë¤«¾È¹ç
if (elementData.elementType == elementType) {
// ¾È¹ç¤Î·ë²Ì¡¢¹çÃפ·¤¿ ElementData ¤ËÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë²èÁü¾ðÊó¤òÌ᤹
return elementData.elementSprite;
}
}
// ¤É¤ì¤â¹çÃפ·¤Ê¤¤¾ì¹ç¤Ï null ¤òÌ᤹
return null;
}
////* ¤³¤³¤Þ¤Ç *////
}
¡¡¥¹¥¯¥ê¥×¥È¤òºîÀ®¤·¤¿¤é¥»¡¼¥Ö¤·¤Þ¤¹¡£
¡¡BulletSelectManager ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤ò³Îǧ¤·¤Þ¤¹¡£
¿·¤·¤¯ SerializeField °À¤ÇÀë¸À¤·¤¿ elementDataSO ÊÑ¿ô¤¬Äɲ䵤ì¤Æ¤¤¤Þ¤¹¡£
BulletSelectManager ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¡¡¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü