몰?.루();

[마인크래프트 모드 개발] 간단한 GUI 띄우기 본문

마인크래프트/마인크래프트 모딩

[마인크래프트 모드 개발] 간단한 GUI 띄우기

toonraon 2016. 12. 16. 12:25

아이템을 들고 우클릭하면 단순히 이미지 파일 GUI가 뜨게 해보자.


GUI를 담당할 MyGUI.java 파일과 클래스를 생성한다.




위 코드에서

는 뭐하는 부분인지 잘 모르겠다.

일단 각 파라미터는 r, g, b, alpha인데 몇 번 실험해본결과 rgb에서 1,0,0으로 해놓으면 빨간색만 인식한다. 그래서 만약 이미지에서 순수하게 초록색이나 파란색만의 조합으로 이뤄진 색깔은 검게 보인다. 마치 크로마키 기법 같은 것이다. 그런데 alpha는 도저히 뭔지 모르겠다. 일반적으로 생각하는 그 알파값이 아닌 것 같다. 0을 넣으면 이미지가 보이지 않고 1을 넣으면 이미지가 온전히 보인다. 그렇다고 해서 0.5f를 넣는다고 이미지가 반투명하게 보이는 것도 아니다. 그냥 1과 동일하다. 0.4f도 마찬가지였으나 0.1f는 또 아예 안 보였다.

이해할 수 없다. 그냥 1,1,1,1을 파라미터로 넣는게 정석인듯하다.


이렇게만 써놓는다고 내가 원하는 아이템에서 우클릭을 한다고 GUI가 알아서 뜰 것이란 안일한 생각은 하지 않는 것이 좋다. 아직 언제 GUI가 뜰 건지에 대해서는 설정하지 않았으므로 예전에 만든 MyItem.java에 우클릭하면 MyGUI 클래스를 불러오는 코드를 추가하자.



여기에서

가 없으면 주석에 적힌 것처럼 멀티서버에서 우클릭하면 GUI가 동시에 두 번 열리게 된다. 즉, 대부분 GUI를 구현할 때마다 이걸 써줘야만 한다. 좀 귀찮겠지만.



그런데 중요한 것은 모든 이미지파일을 256x256 이어야한다는 것이다.


실제로 유명 모드들을 까봐도 이미지 파일이 대부분 256x256이다. 작은 이미지는 문제가 안 되지만 256x256보다 큰 이미지는 그럼 어떻게해야할까?


두 개의 256x256을 이어붙이는 방법이 있다.


아니면 512x512의 파일을 써도 된다. 다만 이 경우에 예를들어 GUIWidth를 128으로 해도 실제로 화면에 보이는 것은 128픽셀이 아니라 256픽셀이다. 캔버스 크기가 2배 늘어났기 때문에 GUIWidth도 실제보다 2배 커지는 것이다. 이를 통해서 잘만 계산하면 512x512는 물론 직사각형, 훨씬 큰 이미지 파일도 사용할 수 있긴하다. 그러나 문제는 파라미터로 들어가는 숫자가 모두 int형이기 때문에 비율을 계산했는데 딱 떨어지는 숫자가 아니라 소수라면 1~2픽셀씩 오차가 생길 수도 있다.


그래서 왠만하면 256x256으로 맞추는 것이 좋다. 실제로 256x256 정도면 왠만하면 GUI 표현이 가능하다.



사움크래프트의 리서치 테이블 GUI조차도 256x256이다.




Comments