2023년 1월 13일 금요일

슬라이더 색상 변경

 


와 같은 슬라이더가 있습니다. 이 슬라이더의 색을 바꾸는 것은 간단하죠.



여기서 화살표 부분을 선택하면 색을 바꾸는 메뉴가 나옵니다.
그런데 스크립트에서 이 작업을 하려고 하면 어떨까요?

일단은 Canvas에서 슬라이더를 찾아야 합니다.


        GameObject timeFlow = wideCanvas.transform.Find("TimeFlow").gameObject;
        Slider slider = timeFlow.GetComponent<Slider>();

위의 트리형 Hierarchy창을 보면 TimeFlow의 차일드 Fill Area, 그리고 다시 그 차일드 Fill로 구성되어 있음을 알 수 있습니다. 그러므로 fill 부분의 색을 바꾸기 위해서는,
(TimeFlow는 slider를 컴포넌트로 가지고 있는 오브젝트이므로 slider.gameObject에 해당)

        GameObject timeFlow = wideCanvas.transform.Find("TimeFlow").gameObject;
        Slider slider = timeFlow.GetComponent<Slider>();
        slider.gameObject.transform
            .Find("Fill Area")  // transform 밑의 Fill Area 찾기
                .Find("Fill")   // 또 그 아래의 Fill 찾기
                    .GetComponent<Image>()   // Image를 얻어
                        .color = Color.red;     // 색 바꾸기

마찬가지로 나머지 부분도 색을 바꿀 수 있습니다.

        GameObject timeFlow = wideCanvas.transform.Find("TimeFlow").gameObject;
        Slider slider = timeFlow.GetComponent<Slider>();
        slider.gameObject.transform
            .Find("Fill Area")  // transform 밑의 Fill Area 찾기
                .Find("Fill")   // 또 그 아래의 Fill 찾기
                    .GetComponent<Image>()   // Image를 얻어
                        .color = Color.red;     // 색 바꾸기
        slider.gameObject.transform
            .Find("Background")
                .GetComponent<Image>()
                    .color = Color.blue;
        slider.gameObject.transform.Find("Handle Slide Area")
            .Find("Handle")
                .GetComponent<Image>().color = Color.green;


댓글 없음:

댓글 쓰기