보름만에 뵙겠습니다. 사건 사고가 많이 일어나서 글 쓸 시간이 없었네요. 양해를 구하면서. 지난 글의 내용인 애드온 폴더 생성에 이어 이번에는 애드온에 넣을 기본적인 내용을 살펴보도록 하겠습니다. 자신이 직접 만드는 애드온이 가장 필요하다고 느낄 때인 UI를 수정하는 방법을 중심으로 말이죠.
1번 글을 보시면 단축키 또는 아이콘을 사용하지 않고 스크립트만 사용해서 가방을 열고 닫았을 것입니다.
▲ :Show() 와 :Hide() 만 있어도 많은 것을 할 수 있었다.
앞의 예제를 통해서 우리는 수정하고 싶은 UI의 이름만 알면 뭐든지 할 수 있다는걸 알게 되었는데요, 그렇다면 이 UI의 이름들은 어떻게 알아내는 것일까요? 바로 와우 내 UI를 건드릴 때 사용하는 마법의 단어가 있습니다. 바로 /fstack 이지요.
/fstack
/fstack 또는 /framestack, /프레임구성 입니다. 이 명령어를 대화창에 입력하면 작은 창이 하나 뜨게 되는데요.
▲ /fstack 를 입력했을 때 모습
이 창에서 우리는 '현재 마우스가 위치한 곳의 UI 목록과 현재 마우스의 좌표'를 알 수 있습니다. 위 그림을 보시면 현재 단축바의 오른쪽 끝 독수리를 가리키고 있고, 우리는 이 프레임의 이름이 'MainMenuBarRightEndCap'라는 것을 알 수 있습니다.
자, 그럼 저 그림을 없에볼까요? 앞의 예제에서 우리는 해당 UI를 보고싶지 않다면 UI의 이름 뒤에 ':Hide()' 를 입력하면 된다고 배웠습니다.
/run MainMenuBarRightEndCap:Hide()
숨기는 것은 물론이고 다시 보여주는 것 까지 잘 작동되는 것을 보았습니다. 이렇게 /fstack 하나로 화면 내에 표시되는 UI들의 모습을 쉽게 볼 수 있었습니다.
다른 예제를 살펴보겠습니다. 플레이어의 프레임의 위치가 조금 구석에 있네요. 이걸 화면 근처로 이동시켜 크기를 작게, 약간 반투명하게 바꾸어 보겠습니다.
▲플레이어 프레임의 이름은 PlayerFrame
마찬가지로 fstack을 통해 플레이어 프레임의 이름을 알아냈습니다. 그리고 위치 이동, 크기 변경, 투명도 변경 의 명령어는 다음과 같습니다.
/run PlayerFrame:SetPoint("TOPLEFT",100,-100)
/run PlayerFrame:SetScale(0.7)
/run PlayerFrame:SetAlpha(0.3)
:SetPoint("TOPLEFT",100,-100) 는 해당 UI의 위치를 '왼쪽 상단'을 기준으로 x좌표로 100만큼 오른쪽, y좌표로 100만큼 아래로 간다는 뜻입니다. 만약 왼쪽 위로 올리고 싶다면 숫자를 (-100,100), 오른쪽 위로 올리고 싶다면 숫자를 (100,100)을 적어주면 되겠지요.
:SetScale(0.7) 은 해당 UI의 크기를 0.7배로 바꾼다는 뜻입니다. 원래 크기를 1로 기준하여 숫자가 클 수록 크게, 작을수록 작게 바꾸게 됩니다.
:SetAlpha(0.3) 은 해당 UI의 투명도를 0.3으로 바꾼다는 뜻입니다. 완전 투명한 0부터 완전 불투명한 1까지 사이 값을 적어주면 됩니다.
그렇다면 해당 스크립트를 실험해보겠습니다.
마찬가지로 잘 작동하는 것을 볼 수 있습니다.
크기, 위치, 보이기, 숨기기 등 프레임과 관련한 함수들은 아래 링크에서 확인할 수 있습니다. 프레임 뿐만 아니라 폰트, 텍스쳐 등과 관련해서도 여러가지를 변경할 수 있습니다. Defined Methods 항목을 참조해주세요. http://wowprogramming.com/docs/widgets/Frame
자, 그렇다면 이것들을 지난 2번 과제에서 만든 애드온 폴더에 넣어보겠습니다. 대화창에는 /run 을 붙였던 스크립트를 애드온에 넣으면 /run을 뺀다고 했었죠? 단축바의 오른쪽 독수리를 제거하고 플레이어 프레임의 위치, 크기, 투명도를 조절한 내용을 모두 집어넣으면 다음과 같은 모습이 될 것입니다.
▲3번 예제를 마쳤다면 이런 모습이 될 것입니다.
지난 예제로 사용했던 초시계 내용이 이미 들어가있군요. 오늘 예제의 내용을 위 또는 아래 어디든지 붙여넣어도 됩니다. 물론 게임 내에서 테스트 해보는 것도 잊지마시구요.
앞의 예제에서 우리는 UI의 위치를 바꾸는 방법을 알아보았습니다. 허나 이를 이용해서 드루의 변신바, 암사의 형상바, 전사의 태세바 등의 위치를 바꾸거나 숨기려고 하면 자꾸 설정이 초기화가 되는 것을 볼 수 있는데요. 1번 글에서 우리는 애드온이 작동하기 위해서는 [1.프레임/2.함수/3.조건]이 필요하다고 말했습니다. 이 문제는 3번의 특정 조건이 발생하면 태세바의 설정을 초기화 시켜주는 작업이 등록되어 있기 때문입니다. 그렇다면 우리는 이 조건을 등록시키는 법을 알았으니 해제하는 법을 알아야겠죠?
/run StanceBarFrame:UnregisterAllEvents()
StanceBarFrame 은 태세바의 이름을 뜻하구요. :UnregisterAllEvents() 는 말 그대로 해당 UI의 이벤트를 모두 해제한다는 뜻입니다. 이를 입력한 뒤 태세바에 여러 조건을 넣어보면 어느정도 완화된 모습을 보여주는걸 알 수 있습니다.