2019년 6월 22일 토요일

GMS2 zUI 분석


ZUI 소개

GMS에서 UI를 구현하는 extension ( Button, CheckBox , Slider, Label )
Free
깔끔한데 설명이 없어서 사용하기가 어렵습니다.

https://marketplace.yoyogames.com/assets/649/zui-engine


GMS2 에서 오류 발생 처리

test_callback_slider() 함수에서 오류발생함
발생 사유, argument0을 사용안해서 발생하는 현상, argument0 = argument0 부분 추가하여 오류 발생 하지 않도록 함.

argument0 = argument0
with (target) {
 __scalex = argument1 / 100;
 __scaley = argument1 / 100;
}

구성

script+object로 구성되며, 예제 코드로 제공되는 형태의 코드를 어디에서나 한번만 호출 하면 됩니다. 일반적으로 한번 호출이 필요하기 때문에 아래의 코드를 임의의 object의 create에 넣고, room에 object를 생성시키면 됩니다.

[Example Code]
  with (zui_main()) {
   with (zui_create(zui_get_width() * 0.5, zui_get_height() * 0.5, objUIWindow, -1)) {
    zui_set_size(400, 198);

    with (zui_create(0, 0, objUIWindowCaption)) {
     caption = "Window";
     draggable = 1;
    }

    with (zui_create(12, 38, objUIButton)) {
     zui_set_anchor(0, 0);
     zui_set_size(120, 32);
     caption = "Button 1";
     callback = test_callback_button;
    }

    with (zui_create(140, 38, objUIButton)) {
     zui_set_anchor(0, 0);
     zui_set_size(120, 32);
     caption = "Button 2";
     callback = test_callback_button;
    }

    with (zui_create(268, 38, objUIButton)) {
     zui_set_anchor(0, 0);
     zui_set_size(120, 32);
     caption = "Button 3";
     callback = test_callback_button;
    }

    with (zui_create(36, 170, objUICheckbox)) {
     zui_set_anchor(0, 0);
     value = 1;
    }

    with (zui_create(60, 170, objUISlider)) {
     zui_set_anchor(0, 0);
     zui_set_width(128);
     minimum = 4;
     maximum = 8;
     value = 6;
    }
   }
  }

예제 코드 분석

zui_main() 호출은 objZUIMain 을 생성합니다. 그리고 그 안에서 objUIWindow 를 생성하고, objUIWindowCaption 를 생성하면, 하나의 윈도우가 됩니다.
그리고 내부 안에는 어떤 컨트롤을 넣을지 결정하면 됩니다.
버튼이 눌리면 callback = test_callback_button; 이런식으로 스크립트 합수를 연결합니다. 인자로는 호출하는 id 값이 넘어 옵니다.

단점

UI가 많지 않습니다. List도 없습니다. 어디에 사용할 수 있을지 고민이 되지만, 이것을 참고하여 다른 ui형태를 만들 수 있습니다.
Window Close가 없습니다. 그래서, 필요시 zui_destroy 를 호출하면 모든 윈도우가 닫힙니다.







댓글 없음:

댓글 쓰기