관리 메뉴

도드넷

도드의 유니티 API#3 - 유니티 UI 버튼, 이미지 기초 GUI를 만들어보자. 본문

창고/나만의 게임 제작

도드의 유니티 API#3 - 유니티 UI 버튼, 이미지 기초 GUI를 만들어보자.

도드! 2016. 8. 29. 20:55
반응형




아래 빈 칸들 보이시나요. 제 첫 UI입니다.

QWERF 스킬들어갈거고 맨끝큰 정사각형에는 유닛 초상화 넣을예정입니다.


도드의 유니티 API#3 유니티 UI

- 유니티 UI 기초 UI를 만들어보자!


유니티에서 UI만들기는 생각보다 쉽습니다.


1. 일단 필요한 이미지는 알아서 감각적으로 만들어주시구요.


2. 캔버스를 만들어줍니다.


3. 그안에 자식 요소로 UI요소들을 담을 패널을 만들어줍니다. (배경이 투명이여도 되고 아니여도 됩니다.)


3. 패널안에 필요한 UI 요소인 이미지및 버튼등을 만들어줍니다.


4. 배치하기전에 캔버스에 가서 Canvas Scaler 컴포넌트에서

UI Scale Mode를 Scale With Screen Size로 바꿔줍니다. 이렇게 해놔야 다양한 해상도에서 UI가 사라지지않고 알맞게 배치됩니다. Reference Resolution 같은경우는 저는 100 x 100 이 제일좋더라구요. 이런건 직접해보면서 수치찾으셔야 겠죠.


5. 각패널의 앵커를 설정합니다. 앵커는 각패널의 Rect Transform 컴포넌트에서 다중사각형 모양을 더블클릭하면 쉽게 설정할수있으며 이는 UI가 붙어있을 자리를 고정하는 역할을 해줍니다.


꿀팁+1 : UI를 스크립트에서 위치 잡는방법

- UI의 위치를 잡아줄때 position을 사용하면 안됩니다. 해상도에따라 결과가 틀려지고 액터이동시 예상치못한 결과를 초래할 수 있기 때문이죠. 고로, UI는 position으로 위치를 잡으면 안됩니다.


그럼뭘로 위치를 잡으란 말인가?


UI는 캔버스내에 위치를 반환하는 anchoredPosition을 사용해야 합니다.


        if (conv_pannel.GetComponent<RectTransform>().anchoredPosition.y <= 0 && conv_pannel.GetComponent<Rigidbody2D>().velocity.y < 0)
        {
            conv_pannel.GetComponent<Rigidbody2D>().velocity = new Vector2(0, 0);
        }


아 그리고 전에 WAIT 메소드랍시고 올린게 있는데 그것보다 훨씬 좋은 메소드를 발견했습니다.


바로 WHILE문을 이용한 더 유동적이고 활용성이 높은 반복문형 WAIT 메소드입니다.


유니티 WAIT V2


Ienumerator 함수이름() ...


Current_Time = 0f;
Max_Time = 3.0f;


while (Current_Time < Max_Time)
        {
            Current_Time += Time.deltaTime;

            if (Input.GetKeyDown(KeyCode.Space) && keyReleased)
            {
                keyReleased = false;
                Current_Time = Max_Time;
            }
            else
            {
                yield return null;
            }
        }


- 실행 : StartCoroutine(함수이름());


동일하게 Ienumerator 함수로써 StartCoroutine으로 스타트해야 합니다. while문을 이용함으로써

중간 스킵기능도 가능하고 while 조건문을 활용해서 특정 조건이 충족될때까지 무한 대기도 가능합니다.






반응형
Comments