public ChampInstance GetChamp(string name) { ChampInstance champ = default(ChampInstance); // name이 유효한 값인지 검사한다. if (IsVaildChampName(name) == false) { Debug.LogError(name + " is invalid value.."); return(champ); } for (int i = 0; i < championPool.Count; i++) { if (name.CompareTo(championPool[i].name) == 0) { champ = championPool[i]; championPool.RemoveAt(i); return(champ); } }// loop: name과 일치하는 오브젝트를 찾는다. if (champ == default(ChampInstance)) { MakeChamp(name); champ = GetChamp(name); }// if: 없는 오브젝트를 새로 만들어서 리턴한다. return(champ); }
void MakeChamp(string name) { ChampInstance myInstance; GameObject myChamp; for (int i = 0; i < addObjectCnt; i++) { championPrefabs.TryGetValue(name, out myChamp); myInstance = new ChampInstance(); myInstance.name = name; myInstance.quality = 1; myInstance.isClickOk = false; myInstance.champion = Instantiate(myChamp, Vector3.zero, Quaternion.identity, transform); myInstance.champion.SetActive(false); ChampInfo.SetupChampInfo(myInstance); myInstance.SetupDefault(); championPool.Add(myInstance); }// loop: 정해진 크기만큼 미리 인스턴스를 생성한다 // 오브젝트풀의 크기가 maxPoolCnt 보다 커지면 넘어간 만큼 지운다. if (championPool.Count > maxPoolCnt) { RemoveChamp(championPool.Count - maxPoolCnt); } }
public void GetBackChamp(ChampInstance champ) { // 되돌려 받으면 초기화한다. champ.champion.transform.parent = transform; champ.champion.transform.position = new Vector3(0, 0, 0); champ.champion.transform.rotation = Quaternion.Euler(new Vector3(0, 0, 0)); champ.champion.transform.localScale = new Vector3(1, 1, 1); if (champ.standingTile != default) { champ.standingTile.isEmpty = true; champ.standingTile = default; } champ.quality = 1; champ.isClickOk = false; champ.champion.gameObject.SetActive(false); championPool.Add(champ); }