示例#1
0
        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);
            }
        }
示例#2
0
 public IMedal PickUp(MedalValue valueType, Vector3 position) => PickUp(valueType, position, Quaternion.identity);