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); } } }