Exemple #1
0
    private void Update()
    {
        // # Skill_Manager에서 넘겨준 정보를 받아 버튼에 띄운다.
        if (Player_Stat.instance.isLevelUp && !ForOne)                                  // isLevelUp이 true로 바뀐다면
        {
            One   = Skill_Manager.GetComponent <Skill_Manager>().LevelUpSkillChoose(1);
            Two   = Skill_Manager.GetComponent <Skill_Manager>().LevelUpSkillChoose(2);
            Three = Skill_Manager.GetComponent <Skill_Manager>().LevelUpSkillChoose(3);
            SkillChooseUI.gameObject.SetActive(true);
            //Obj.transform.GetChild(0).GetComponent<Image>.overrideSprite =  Resources.Load<Sprite>("Textures/sprite"); 예제 코드
            spriteName = "SkillIcon_" + One.Sprite_Num;
            //SkillChooseUI.transform.GetChild(0).GetComponent<Image>().overrideSprite = Resources.Load<Sprite>(spriteName);

            SkillChooseUI.transform.GetChild(0).GetComponent <Image>().overrideSprite            = sprites[One.Sprite_Num];
            SkillChooseUI.transform.GetChild(0).transform.GetChild(0).GetComponent <Text>().text = One.Skill_Name;
            SkillChooseUI.transform.GetChild(0).transform.GetChild(1).GetComponent <Text>().text = One.Skill_Desc;
            spriteName = "SkillIcon_" + Two.Sprite_Num;
            SkillChooseUI.transform.GetChild(1).GetComponent <Image>().overrideSprite            = sprites[Two.Sprite_Num];
            SkillChooseUI.transform.GetChild(1).transform.GetChild(0).GetComponent <Text>().text = Two.Skill_Name;
            SkillChooseUI.transform.GetChild(1).transform.GetChild(1).GetComponent <Text>().text = Two.Skill_Desc;
            spriteName = "SkillIcon_" + Three.Sprite_Num;
            SkillChooseUI.transform.GetChild(2).GetComponent <Image>().overrideSprite            = sprites[Three.Sprite_Num];
            SkillChooseUI.transform.GetChild(2).transform.GetChild(0).GetComponent <Text>().text = Three.Skill_Name;
            SkillChooseUI.transform.GetChild(2).transform.GetChild(1).GetComponent <Text>().text = Three.Skill_Desc;
            ForOne = true;
            StartCoroutine("LevelUpDelay");
        }
    }
Exemple #2
0
    public Skill_Manager LevelUpSkillChoose(int Select)
    {
        int           frame1; int frame2; int frame3;
        bool          Check1 = false; bool Check2 = false; bool Check3 = false;
        Skill_Manager chosen1 = null; Skill_Manager chosen2 = null; Skill_Manager chosen3 = null;
        //Player_Stat.instance.isLevelUp = false;   일단 보류
        int Min = GameObject.Find("SkillChoose").GetComponent <SkillChoose>().MinValue;
        int Max = GameObject.Find("SkillChoose").GetComponent <SkillChoose>().MaxValue;

        // # 스킬넘버 3개를 난수 생성으로 받기
        frame1 = Random.Range(Min, Max + 1);
        frame2 = Random.Range(Min, Max + 1);
        frame3 = Random.Range(Min, Max + 1);
        // # 스킬 중복 방지와 선택된 스킬 체크 방지는 에러로 인해 없앴다.
        do
        {
            foreach (Skill_Manager sm in scripts)
            {
                if (sm.Skill_Num == frame1 || sm.Skill_Num == frame2 || sm.Skill_Num == frame3)
                {
                    if (!sm.Selected)
                    {
                        if (!Check1)
                        {
                            chosen1 = sm;
                            Check1  = true;
                            continue;
                        }
                        else if (!Check2)
                        {
                            chosen2 = sm;
                            Check2  = true;
                            continue;
                        }
                        else if (!Check3)
                        {
                            chosen3 = sm;
                            Check3  = true;
                        }
                    }
                    else
                    {   // # 이미 선택된 스킬이라면 frame 3개중에 어떤 frame의 숫자인지 일단 파악한다.
                        frame1 = Random.Range(Min, Max + 1);
                        frame2 = Random.Range(Min, Max + 1);
                        frame3 = Random.Range(Min, Max + 1);
                        break;
                    }
                }
            }
        }while (!Check1 || !Check2 || !Check3);                  //정말 비효율적인 알고리즘. 개선할 여지가 많다.
        //Debug.Log(chosen1); Debug.Log(chosen2); Debug.Log(chosen3);


        // # 한번에 하나씩밖에 return이 안돼서 이렇게 코드를 짰는데 이 코드 때문에 스킬들이 중복되어 나타난다.
        if (Select == 1)
        {
            return(GetChosenOne());
        }
        else if (Select == 2)
        {
            return(GetChosenTwo());
        }
        else if (Select == 3)
        {
            return(GetChosenThree());
        }
        else
        {
            return(null);
        }

        // # 씬 전환이 일어났던 기존의 시스템에서 필요했던 코드. 지금은 더 쉬운 방법이 있지만 일단 그대로 사용하겠다.
        // 이 3개를 이미지화 해서 버튼에 넣고 누르면 Selected 되게 만들어야 한다. 스킬 아이콘의 템플릿은 SkillIcon_(스킬숫자)의 형식이므로 지정만 잘해주면 충분히 여기서 접근할 수 있다.

        Skill_Manager GetChosenOne()
        {
            return(chosen1);
        }

        Skill_Manager GetChosenTwo()
        {
            return(chosen2);
        }

        Skill_Manager GetChosenThree()
        {
            return(chosen3);
        }
    }