![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F37sqC%2FbtstpE2zysv%2FkQeZRSiajFvQ21INScZ3hk%2Fimg.png)
클래스(Class)와 구조체(Struct)의 차이 Class 참조 형식으로 Heap 영역에 할당 제거될 때 가비지 컬렉터(Garbage Collector)에 의해 수거됨 상속 가능 Struct 값 타입이고 스택(Stack)에 할당됨 함수에서 나갈 때 CLI에 의해 수거됨 상속이 불가능함 프로파일러로 분석 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Assign_Test : MonoBehaviour { public bool triggerClass; public bool triggerStruct; // 클래스 class Test_class { int a; }; // 구조체 struct Te..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc2uDmy%2Fbtstr1CJ4TZ%2FlLyZlVSdqyQcgPzRSQHeQ0%2Fimg.png)
텍스트 아웃라인/쉐도우(Outline/Shadow) 텍스트에 아무런 효과를 안 줬을 때(Outline X, Shadow X) → vertex : 344 아웃라인/쉐도우 (Outline / Shadow) 아웃라인과 쉐도우는 vertex 낭비가 굉장히 심함 아웃라인 > 쉐도우 (아웃라인이 쉐도우보다 낭비가 더 심함) 아웃라인을 적용해 줬을 때 → vertex 2500개 쉐도우 적용해 줬을 때 → vertex 1000개 모바일 게임에서는 한 장면에 vertex의 개수가 10만 개가 넘어가면 유니티 엔진 자체에서 경고가 무수히 날아옴 굉장히 유의해서 사용해야 함 vertex 개수는 항상 신경 써줘야 함 BestFit 입력한 텍스트가 Rect Transfrom(설정해 둔 사각형)에 다 들어올 수 있도록 글자 사이..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNu5yM%2FbtstnwpYcOQ%2FXfkAxnO0lR6PtWaD3QorW0%2Fimg.png)
Canvas 최적화 프로파일러로 분석 Text를 변경하는 스크립트를 통해 프로파일러로 퍼포먼스 분석 PostLateUpdate.PlayerUpdate를 보면 Canvas에서 그려지는 작업이 발생하는 것을 알 수 있다. → 텍스트를 변경하는 작업은 Canvas에서 발생 버텍스 버퍼 유니티의 UI는 화면에 그려질 때 버텍스 버퍼(Vertex Buffer)로 그려짐 Scene → WireFrame으로 보면 버텍스 버퍼를 볼 수 있음 버텍스는 하나의 선(line) 단위 해당 그림에서는 총 28개의 버텍스가 존재 더보기 버텍스 버퍼는 Canvas에 위치함 그려지는 과정 버텍스 버퍼의 변형이 발생 해당 버텍스 버퍼를 리빌드(Rebuild) 최적화가 필요한 이유 하나의 UI가 변경이 일어나면 그 Canvas 전체를 ..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3XXNy%2FbtstrPB9Vm3%2FkPziy1KZv3KI4PQQ97Ku7K%2Fimg.png)
프로파일러 유니티 엔진에서 제공해 주는 유니티에서 개발하고 있는 앱을 분석할 수 있는 툴 매 프레임마다 구체적인 퍼포먼스를 분석할 수 있음 게임의 최적화를 위해 사용 Deep Profile을 통해 정밀 분석 가능 어떤 모드로 분석을 하는 것은 자유지만 필자는 Hierarchy로 보는 게 편해서 해당 모드로 분석 해당 상태에서 게임을 시작하면 분석 차트가 흘러나옴. Hierarchy EditorLoop : 에디터 상에서만 사용되는 퍼포먼스 최적화 측면에서는 전혀 고려하지 않아도 됨 PlayerLoop : 프로그래머가 직접 조작하는 부분들 최적화 측면에서 고려해야 하는 부분 해당 부분을 분석해야 함 프로파일러 분석하는 법 오브젝트를 회전시키는 스크립트가 아래처럼 존재한다. 해당 스크립트는 Update 함수에..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuYtE3%2FbtssJiY3oQP%2FFVZ2p4pG5IapmL14k7fHD0%2Fimg.png)
버튼을 누르면 실행될 함수를 만들기 위해 PopUpManager.cs라는 스크립트를 따로 만들 것이다. 해당 스크립트에는 팝업버튼이 해야 하는 기능 (팝업 닫기, 왼쪽 버튼 눌렀을 때, 오른쪽 버튼 눌렀을 때 등)으로 구성되어 있다. PopUpManager.cs 기본 설정 - 싱글턴 패턴 public class PopUpManager : MonoBehaviour { // 싱글턴 패턴 ~~~~~~~~~~~~~~~~~~~~~~~~ private static PopUpManager _instance; public static PopUpManager Instance { get { return _instance; } } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ public GameOb..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcUBNu0%2FbtrX9GaXyKw%2FplSB2fYDdTQWmEzdwPkNDk%2Fimg.png)
1. 레이아웃 생성 및 설정 캔버스의 하위 요소로 빈 오브젝트인 max와 그 하위 오브젝트인 popup을 만든다. max와 popup에 Vertical Layout Group 컴포넌트를 추가한다. max - 만들고 있는 팝업의 최대 크기를 결정하기 위해 생성 최대 영역의 크기를 보기 위해 임시로 이미지 삽입 Child Alignment를 Middle Center로 맞춘다. → 팝업 텍스트 가운데 정렬 Control Child Size Width/Height를 체크한다. 하위 요소에 의해서 사이즈가 결정되도록 함. → 텍스트의 길이에 따라 팝업창의 길이를 조절하기 위함 Child Force Expand Width/Height 체크를 해제 PopUp 하위 요소로 팝업 배경을 위한 Image UI(BackGr..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7siqP%2Fbtss71WVvVp%2FhEasWpepecv8mdktH1Gos0%2Fimg.png)
해당 포스팅은 Layout과 Layout Controller의 개념을 알고 있다는 전제로 하는 설명이기 때문에 아래 링크에서 Layout Controller에 대한 개념을 보시는 것을 추천드립니다. [Unity 3D] UI 레이아웃 개념과 컨트롤러(Layout Controller) 기초 정리 Layout Controller 오브젝트를 일정한 규칙에 따라 배치하는 것 Inspector : 디버그(Debug) 모드 Min Width : 최소한의 너비 Min Height : 최소한의 높이 Preferred Width : 선호되는 너비 Preferred Height : 선호되는 높이 howudong.tistory.com 더보기 Layout Element Layout Controller 안에 있는 UI 요소들이 ..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSOogV%2FbtstlgnuOXa%2F91ijx3IJaMRwwvasXw7rrK%2Fimg.png)
Layout Controller 오브젝트를 일정한 규칙에 따라 배치하는 것 Inspector : 디버그(Debug) 모드 Min Width : 최소한의 너비 Min Height : 최소한의 높이 Preferred Width : 선호되는 너비 Preferred Height : 선호되는 높이 Flexible Width : 너비가 늘어나는가? Flexible Height : 높이가 늘어나는가? Layout Component 사용하기 색이 다른 이미지 UI 4개를 만들어두고 빈 오브젝트 layout의 하위 오브젝트로 설정 Horizontal Layout Group Vertical Layout Group도 속성이 똑같음. layout 오브젝트에 Horizontal Layout Group 컴포넌트를 추가 위와 같이..