Exemple #1
0
    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);
    }
Exemple #2
0
    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);
        }
    }
Exemple #3
0
 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);
 }