public IMedal PickUp(MedalValue valueType, Vector3 position, Quaternion rotation) { //activeでないメダルを見つける var idolMedal = medalPool[valueType].FirstOrDefault(m => m.Status.Value == PoolObjectUseStatus.Idol); //見つかったらそれを返す if (idolMedal != null) { idolMedal.Keep(position, rotation); return((IMedal)idolMedal); //MedalであることはInstantiateから保証されているのでダウンキャストでも問題ない } else { //見つからなかった(全て使用中)なら、新しく生成する var medal = Instantiate(poolList.First(set => set.ValueType == valueType).Prefab, position, rotation); //メダルプールに入れる medalPool[valueType].Add(medal); //アクティブ数のカウントを委託 couter.OutsourceCounting(medal); return(medal); } }
public IMedal PickUp(MedalValue valueType, Vector3 position) => PickUp(valueType, position, Quaternion.identity);