유니티:UI

학교의 모든 지식. SMwiki
Sam (토론 | 기여)님의 2021년 8월 13일 (금) 20:29 판 (→‎앵커)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
둘러보기로 이동 검색으로 이동

틀:유니티

  1. 유니티:개요
  2. 유니티:기본 조작
    1. 유니티:에셋스토어
  3. 유니티:카메라
  4. 유니티:오브젝트
    1. 유니티:데이터 입력받기
    2. 유니티:오브젝트 이동(오브젝트 조작)
    3. 유니티:힘으로 오브젝트 이동
    4. 유니티:충돌 이벤트
    5. 유니티:오브젝트 작성 tip
    6. 유니티:프리팹
  5. 유니티:코딩기초
    1. 유니티:C sharp 코딩 편의기능
    2. 유니티:MonoBehaviour
    3. 유니티:이벤트 메서드
    4. 유니티:컴포넌트 조작하기
  6. 유니티:UI
  7. 유니티:게임 내 화면
  8. 유니티:플레이어
    1. 유니티:모델
    2. 유니티:캐릭터 이동
    3. 유니티:애니메이션
    4. 유니티:주인공 시점
  9. 유니티:맵
    1. 유니티:투명한 벽 만들기
    2. 유니티:내비게이션
  10. 유니티:씬
  11. 유니티:몬스터
  12. 유니티:아이템
  13. 유니티:음향
    1. 유니티:배경음
    2. 유니티:효과음
  14. 유니티:빌드
  15. 유니티:VR
    1. 유니티:VR:UI
    2. 유니티:VR:VR로 변환
  16. 유니티:팁

개요[편집 | 원본 편집]

게임 메뉴나 스테이터스 등을 표시하기 위한 정보제공기능.

여러 카메라 중 어떤 카메라를 플레이어에게 보여줄지 배정하기도 한다.

작성[편집 | 원본 편집]

계층 창에서 우클릭을 하면 UI메뉴가 따로 있다. 클릭하면 여러 게임 오브젝트가 한번에 생긴다.

캔버스는 바로 게임의 창.. 카메라가 아닌,


캔버스에 가까운 것이 상위에 위치한다.(레이거 같은 느낌으로)

유의[편집 | 원본 편집]

UI는 캔버스 하위에 속할 때에만 보인다. 모든 UI는 캔버스의 자식 오브젝트가 되어야 한다.

Text UI[편집 | 원본 편집]

문자열을 표시하는 UI. 폰트는 라이센스 꼭 확인!

세부항목 설명
Line Spacing 행바꿈을 할 때 몇 줄을 띄울 것인가.
Horizental overflow

Vertical overflow

칸을 넘쳐나는 문자열을 포함되지 않는데, 이걸 조절하면 칸이 넘치는 문자열도 표현할 수 있다.

수평, 수직방향으로 옵션이 있다. 넘쳐날 때 줄바꿈을 할지, 자를지, 그대로 넘치게 표시할지 정한다.

Best Fit

[편집 | 원본 편집]

Text 오브젝트에 Shadow컴포넌트(Add Component>UI>Effects>Shadow)를 추가해 다루면 가독성이 높아진다.

이미지 UI[편집 | 원본 편집]

소스이미지를 가져다 넣어야 한다. 이미지 파일을 끌어다 넣으려면, 이미지 타입을 Sprite로 바꾼 후에 넣어주어야 한다.

세부항목 설명
Image Type 이미지타일을 만들거나, 하나의 이미지를 조정하거나 Filled를 통해 이미지 트렌젝션을 할 수도 있겠다. 혹은, 쿨타임 효과 구현에 쓰인다.
Set Native Size 본래 이미지 크기와 동일하게 수정한다.

버튼 UI[편집 | 원본 편집]

클릭이벤트를 가진 반응형 UI이다. TextUI를 포함하고 있다. 이미지 스크립트를 컴포넌트로 갖고 있다.

세부항목 설명
Interactable 반응 하느냐?
Transition
Color Tint 상황에 따라 버튼 색을 바꾼다. Highlighted Color

Pressed Color 눌렀을 때 색

Color Multiplier 색을 어떻게 섞을 것인가?

Navigation 방향성. 탭 키를 누르면 어디로 갈 것이냐? Automatic으로 해두는 게 간편할듯.
On Click() 작동 함수를 넣을 수 있따.

버튼을 누르고 떼기가 한 동작.

함수를 넣은 후에 넣어줄 변수를 설정한다.

배치[편집 | 원본 편집]

캔버스는 게임을 실행중인 화면의 크기에 따라 달라진다. 화면 크기에 따라 캔버스 안에 배치된 UI의 모습들도 달리 배치된다. 최근엔 다양한 기기로 게임을 플레이하기 때문에 고정픽셀 크기의 요소들은 사용하지 않는다.

스케일[편집 | 원본 편집]

다양한 기기에 적용하기[편집 | 원본 편집]

캔버스의 인스펙터 창에서 UI Scale Mode를 Scale With Screen Size로 한다. 화면크기에 따른 스케일을 사용한다.

Reference Resolution은 기준해상도를 의미한다.

방향 매치[편집 | 원본 편집]

일반적으로 기기에 따라 화면비율이 다르기도 하기 때문에 캔버스 크기와 같은 비율로 늘리다간 요소들이 화면 밖으로 빠져나가기도 한다. 인스펙터의 Match로 조절하는데, 폭을 기준으로 할지, 높이를 기준으로 할지 그 정도를 지정할 수 있다.

앵커[편집 | 원본 편집]

캔버스의 기준점을 앵커라 부른다. 캔버스의 어느 지점을 좌표계의 중심으로 잡을 것인가.

Rect Transform에서 앵커 프리셋을 볼 수 있다. shift를 누르고 보면 컴포넌트에서의 기준점도 정할 수 있다.(alt도 뭔가 있는데...)

앵커를 잘 이용하면 단말기마다 다른 화면 크기에서도 일관성을 유지할 수 있다.


게임메니저[편집 | 원본 편집]

UI를 코드로 다룰 수도 있다. 게임 규칙과 상태, UI에 띄울 데이터를 제어하는 코드를 게임메니저라 부른다.


하위요소를 불러오려면 기존 불러오는 방식 뒤에 Inchildren까지 붙여주어야 한다.

//기존 코드에 더해 다음의 코드가 최상단에 추가되어야 한다. UI를 사용한다는 의미.
using UnityEngine.UI;  // UI관련 라이브러리.
using UnityEngine.SceneManagement;  // 씬 관련 라이브러리.

public class GameManager : MonoBehaviour {
    public 타입명 변수명;  // 필요한 변수들을 준비한다.
    public Text 변수명;  // UI에 띄울 텍스트 컴포넌트. 내용변경을 위해 사용.
    public GameObject 변수명;  // 특정 상황에서 활성화할 텍스트(게임오브젝트). 활성, 비활성화로만 사용.
    }
    
    void Start() {
        }
        
    public void EndGame() {
    }