コード例 #1
0
    public void OnDeleteComponenet(int index) // Called when Delete() function called (in DeleteButton)
    {
        gridLayoutGroup.cellSize -= cellSize;

        CpMapComponent componentScript = mapComponents[index].GetComponent <CpMapComponent>();

        if (index < mapComponents.Count - 1)
        {
            GameObject     gObject;
            CpMapComponent cpScript;
            // 인덱스 초기화는 삭제된 인덱스보다 나중에 생긴애들을 아래로 당겨줘야하고
            for (int i = index + 1; i < mapComponents.Count; i++)
            {
                gObject = mapComponents[i];

                foreach (Transform child in gObject.transform)
                {
                    if (child.tag == "DeleteButton")
                    {
                        Button       Button     = child.GetComponent <Button>();
                        DeleteButton deleteFunc = child.GetComponent <DeleteButton>();
                        deleteFunc.Index--;
                    }
                }
            }
            //자료구조 처리와 달리 보이는 그래픽은 반대로 기존애들이 밀려올라가고 새로생긴애들이 아래에 생기는 구조라서 이전에 생긴애들을 아래로 당겨줘야한다.
            for (int i = 0; i < index; i++)
            {
                gObject  = mapComponents[i];
                cpScript = gObject.GetComponent <CpMapComponent>();
                MapScaler.MapDown(cpScript.PlotGroupObj);
            }
        }
        mapComponents.RemoveAt(index); // ui, plot 삭제하고 마지막에 리스트에서 삭제
    }
コード例 #2
0
 /*
  * void Start()
  * {
  *  parentObj = gameObject.transform.parent.gameObject;
  *  parentCpMapComponent = parentObj.GetComponent<CpMapComponent>();
  * }
  */
 public void instantiate()
 {
     parentObj            = gameObject.transform.parent.gameObject;
     parentCpMapComponent = parentObj.GetComponent <CpMapComponent>();
 }
コード例 #3
0
    public void GenerateNewComponent()        //'Create'를 눌렀을시 새 UI를 생성함
    {
        gridLayoutGroup.cellSize += cellSize; //패널에 UI추가를 추가하기위해 크기를 늘려줌
        GameObject componentObj = Instantiate(cpMapComponent);

        componentObj.transform.parent        = transform;
        componentObj.transform.localScale    = Vector3.one;
        componentObj.transform.localPosition = new Vector3(componentObj.transform.localPosition.x, componentObj.transform.localPosition.y, -0.1f);
        componentObj.transform.localRotation = Quaternion.identity;
        mapComponents.Add(componentObj);
        CpMapComponent componentScript = componentObj.GetComponent <CpMapComponent>(); //패널 UI를 새로 생성 (동작 연결X, 존재만 연결)

        componentScript.Instantiate();
        GameObject newPlot = plotter.GeneratePlot(); //새로운 레이어 생성(Plot 생성)

        mapScaler.Scale(newPlot);                    //생성한 레이어의 Scale을 조절해줌
        componentScript.PlotGroupObj    = newPlot;
        componentScript.PlotGroupScript = newPlot.GetComponent <PlotGroup>();

        foreach (Transform child in componentObj.transform) //패널 UI의 삭제버튼에 삭제기능 부여 (Plot자체와 컨트롤 UI 삭제)
        {
            if (child.tag == "DeleteButton")
            {
                Button       Button     = child.GetComponent <Button>();
                DeleteButton deleteFunc = child.GetComponent <DeleteButton>();
                deleteFunc.Index = mapComponents.Count - 1;
                Button.onClick.AddListener(() => deleteFunc.Delete());
            }

            if (child.tag == "Slider") //패널 UI의 슬라이더에 조절기능 부여
            {
                Slider        slider        = child.GetComponent <Slider>();
                SliderControl sliderControl = child.GetComponent <SliderControl>();
                slider.onValueChanged.AddListener(sliderControl.SliderValueSwitch);
                sliderControl.instantiate();
                sliderControl.SliderValueSwitch(slider.value);
            }

            if (child.tag == "Dropdown") //패널 UI의 드롭다운에 조절기능 부여
            {
                TMP_Dropdown    dropDown        = child.GetComponent <TMP_Dropdown>();
                DropdownControl dropDownControl = child.GetComponent <DropdownControl>();
                dropDownControl.PlotGroupObj    = newPlot;
                dropDownControl.PlotGroupScript = newPlot.GetComponent <PlotGroup>();
                dropDown.onValueChanged.AddListener(dropDownControl.DropdownValueSwitch);
                dropDownControl.Instantiate();
                dropDownControl.DropdownValueSwitch(dropDown.value);
            }
        }

        if (mapComponents.Count > 1) //'Create'시 기존에 생성되었던 Layer들이 있으면 각각을 위로 밀어올림
        {
            GameObject     gObject;
            CpMapComponent cpScript;
            for (int i = 0; i < mapComponents.Count - 1; i++)
            {
                gObject  = mapComponents[i];
                cpScript = gObject.GetComponent <CpMapComponent>();
                MapScaler.MapUp(cpScript.PlotGroupObj);
            }
        }
    }