호우동의 개발일지

Today :

article thumbnail
[Unity 3D] 최적화 관점에서 보는 클래스와 구조체 차이(Class vs Struct)
Unity Study/Concept 2023. 2. 13. 16:48

클래스(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
[Unity 3D] 텍스트 최적화를 위한 2가지 사항 정리
Unity Study/Concept 2023. 2. 12. 19:51

텍스트 아웃라인/쉐도우(Outline/Shadow) 텍스트에 아무런 효과를 안 줬을 때(Outline X, Shadow X) → vertex : 344 아웃라인/쉐도우 (Outline / Shadow) 아웃라인과 쉐도우는 vertex 낭비가 굉장히 심함 아웃라인 > 쉐도우 (아웃라인이 쉐도우보다 낭비가 더 심함) 아웃라인을 적용해 줬을 때 → vertex 2500개 쉐도우 적용해 줬을 때 → vertex 1000개 모바일 게임에서는 한 장면에 vertex의 개수가 10만 개가 넘어가면 유니티 엔진 자체에서 경고가 무수히 날아옴 굉장히 유의해서 사용해야 함 vertex 개수는 항상 신경 써줘야 함 BestFit 입력한 텍스트가 Rect Transfrom(설정해 둔 사각형)에 다 들어올 수 있도록 글자 사이..

article thumbnail
[Unity 3D] 캔버스 최적화를 통한 퍼포먼스 향상(Text 예시)
Unity Study/Concept 2023. 2. 10. 17:53

Canvas 최적화 프로파일러로 분석 Text를 변경하는 스크립트를 통해 프로파일러로 퍼포먼스 분석 PostLateUpdate.PlayerUpdate를 보면 Canvas에서 그려지는 작업이 발생하는 것을 알 수 있다. → 텍스트를 변경하는 작업은 Canvas에서 발생 버텍스 버퍼 유니티의 UI는 화면에 그려질 때 버텍스 버퍼(Vertex Buffer)로 그려짐 Scene → WireFrame으로 보면 버텍스 버퍼를 볼 수 있음 버텍스는 하나의 선(line) 단위 해당 그림에서는 총 28개의 버텍스가 존재 더보기 버텍스 버퍼는 Canvas에 위치함 그려지는 과정 버텍스 버퍼의 변형이 발생 해당 버텍스 버퍼를 리빌드(Rebuild) 최적화가 필요한 이유 하나의 UI가 변경이 일어나면 그 Canvas 전체를 ..

article thumbnail
[Unity 3D] 프로파일러(Profiler)로 퍼포먼스 스파크(Performance spark) 현상 알아보기
Unity Study/Concept 2023. 2. 9. 20:51

프로파일러 유니티 엔진에서 제공해 주는 유니티에서 개발하고 있는 앱을 분석할 수 있는 툴 매 프레임마다 구체적인 퍼포먼스를 분석할 수 있음 게임의 최적화를 위해 사용 Deep Profile을 통해 정밀 분석 가능 어떤 모드로 분석을 하는 것은 자유지만 필자는 Hierarchy로 보는 게 편해서 해당 모드로 분석 해당 상태에서 게임을 시작하면 분석 차트가 흘러나옴. Hierarchy EditorLoop : 에디터 상에서만 사용되는 퍼포먼스 최적화 측면에서는 전혀 고려하지 않아도 됨 PlayerLoop : 프로그래머가 직접 조작하는 부분들 최적화 측면에서 고려해야 하는 부분 해당 부분을 분석해야 함 프로파일러 분석하는 법 오브젝트를 회전시키는 스크립트가 아래처럼 존재한다. 해당 스크립트는 Update 함수에..

article thumbnail
[Unity 3D] 팝업시스템(2) - 버튼 기능 구현(싱글톤, 델리게이트 활용)
Unity Study/Concept 2023. 2. 6. 23:17

버튼을 누르면 실행될 함수를 만들기 위해 PopUpManager.cs라는 스크립트를 따로 만들 것이다. 해당 스크립트에는 팝업버튼이 해야 하는 기능 (팝업 닫기, 왼쪽 버튼 눌렀을 때, 오른쪽 버튼 눌렀을 때 등)으로 구성되어 있다. PopUpManager.cs 기본 설정 - 싱글턴 패턴 public class PopUpManager : MonoBehaviour { // 싱글턴 패턴 ~~~~~~~~~~~~~~~~~~~~~~~~ private static PopUpManager _instance; public static PopUpManager Instance { get { return _instance; } } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ public GameOb..

article thumbnail
[Unity 3D] 팝업시스템(1)- 텍스트 길이에 반응하는 팝업창 구현 및 설명
Unity Study/Concept 2023. 2. 4. 20:34

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
[Unity 3D] UI - Layout Element 개념 정리 및 Text에 활용
Unity Study/Concept 2023. 2. 3. 23:30

해당 포스팅은 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
[Unity 3D] UI 레이아웃 개념과 컨트롤러(Layout Controller) 기초 정리
Unity Study/Concept 2023. 1. 30. 15:58

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 컴포넌트를 추가 위와 같이..