アイテムシステムの作成⑤(敵を破壊するとアイテムカウントが増加する)

アイテムカウントの増加
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu]
public class ItemDatabase : ScriptableObject
{
public List<ItemStatus> itemList = new List<ItemStatus>();
// ★データベースのアイテムカウントを増加させるメソッド
public void AddItemCount(string dropItemName)
{
for (int i = 0; i < itemList.Count; i++)
{
// 敵がドロップするアイテムと「名前が一致」するアイテムのカウントを1上げる。
if (itemList[i].itemName == dropItemName)
{
itemList[i].itemCount += 1;
}
}
}
}
LVStatus
using System;
using UnityEngine;
[Serializable]
public class LVStatus
{
public int lv;
public GameObject enemy;
// ★追加
public string dropItemName;
}
アイテムカウントを増加させる
using System.Collections;
using TMPro;
using UnityEngine;
using UnityEngine.SceneManagement;
public class SpawnEnemy : MonoBehaviour
{
public LVDatabase database;
public TextMeshProUGUI lvLabel;
// ★追加
public string dropItemName;
public ItemDatabase itemDatabase;
private ItemManager itemManager;
void Start()
{
StartCoroutine(SpawnRoutine());
// ★追加
itemManager = GameObject.Find("Player").GetComponent<ItemManager>();
}
private IEnumerator SpawnRoutine()
{
yield return new WaitForSeconds(2f);
for (int i = 0; i < database.lvList.Count; i++)
{
GameObject spawnedEnemy = Instantiate(database.lvList[i].enemy, new Vector3(0, 0, 7), Quaternion.identity);
lvLabel.text = "LV: " + (i + 1);
yield return new WaitUntil(() => spawnedEnemy == null);
// ★追加
// そのレベルの敵がドロップするアイテムの名前を取得
dropItemName = database.lvList[i].dropItemName;
// 敵がドロップしたアイテム名をメソッドに渡して、条件が一致したらカウントを1つアップさせる
itemDatabase.AddItemCount(dropItemName);
// アイテムカウントのUIを更新する
itemManager.UpdateUI();
yield return new WaitForSeconds(1.5f);
}
SceneManager.LoadScene("GameClear");
}
}



【Unity6版】Danmaku(全20回)
他のコースを見る
アイテムカウントの増加
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu]
public class ItemDatabase : ScriptableObject
{
public List<ItemStatus> itemList = new List<ItemStatus>();
// ★データベースのアイテムカウントを増加させるメソッド
public void AddItemCount(string dropItemName)
{
for (int i = 0; i < itemList.Count; i++)
{
// 敵がドロップするアイテムと「名前が一致」するアイテムのカウントを1上げる。
if (itemList[i].itemName == dropItemName)
{
itemList[i].itemCount += 1;
}
}
}
}
LVStatus
using System;
using UnityEngine;
[Serializable]
public class LVStatus
{
public int lv;
public GameObject enemy;
// ★追加
public string dropItemName;
}
アイテムカウントを増加させる
using System.Collections;
using TMPro;
using UnityEngine;
using UnityEngine.SceneManagement;
public class SpawnEnemy : MonoBehaviour
{
public LVDatabase database;
public TextMeshProUGUI lvLabel;
// ★追加
public string dropItemName;
public ItemDatabase itemDatabase;
private ItemManager itemManager;
void Start()
{
StartCoroutine(SpawnRoutine());
// ★追加
itemManager = GameObject.Find("Player").GetComponent<ItemManager>();
}
private IEnumerator SpawnRoutine()
{
yield return new WaitForSeconds(2f);
for (int i = 0; i < database.lvList.Count; i++)
{
GameObject spawnedEnemy = Instantiate(database.lvList[i].enemy, new Vector3(0, 0, 7), Quaternion.identity);
lvLabel.text = "LV: " + (i + 1);
yield return new WaitUntil(() => spawnedEnemy == null);
// ★追加
// そのレベルの敵がドロップするアイテムの名前を取得
dropItemName = database.lvList[i].dropItemName;
// 敵がドロップしたアイテム名をメソッドに渡して、条件が一致したらカウントを1つアップさせる
itemDatabase.AddItemCount(dropItemName);
// アイテムカウントのUIを更新する
itemManager.UpdateUI();
yield return new WaitForSeconds(1.5f);
}
SceneManager.LoadScene("GameClear");
}
}



アイテムシステムの作成⑤(敵を破壊するとアイテムカウントが増加する)