GC 스파이크 ( GC Spike )
·
🧊Unity Basic/오브젝트풀링
GC 스파이크 ( Garbage Collection Spike )GC ( Garbage Collector ) 는 더 이상 사용되지 않는 객체를 자동으로 메모리에서 해제하는 시스템이다.그런데 GC가 작동하는 순간에는 모든 쓰레드가 멈추고 , GC 가 메모리 정리 작업을 수행하게 된다.이때 CPU 점유율이 급상승하거나 프레임 드랍 , 렉이 발생한다.이런 일시적인 성능 저하 현상을 바로 GC Spike 라고 부른다. 작동 과정프로그램이 계속 객체를 생성한다힙 ( Heap ) 에 메모리가 꽉 차면 GC 가 자동으로 실행GC 가 불필요한 객체를 제거이 과정 동안 메인 쓰레드도 일시 정지된다 ( 게임이 잠깐 멈춘 듯한 느낌 )GC 완료 후 다시 정상 실행 유니티에서는 GC 스파이크유니티의 Mono 나 IL2CP..
📌애트리뷰트 한줄 요약
·
🧊Unity Basic/애트리뷰트
애트리뷰트 ( Attribute )Attribute : 코드나 변수에 의도, 조건 , 메타데이터를 부여하는 주석형 명령어 ▼인스펙터 표시 제어 관련[SerializeField] : private 변수도 인스펙터에 표시하고 직렬화 가능[HideInInspector] : public 변수라도 인스펙터에 표시되지 않게 한다[Header("텍스트")] : 인스펙터에 제목을 표시 ( 섹션 구분용 )[Tooltip("설명문")] : 마우스 오버 시 도움말 문구 표시[Space(숫자)] : 인스펙터에서 항목 간 간격 추가[Range(min, max)] : 슬라이더 형태로 입력 제한[Multiline] : 여러 줄 텍스트 입력창 표시[TextArea(min, max)] : 인스펙터에서 지정된 크기의 텍스트박스 표시 ▼..
프리팹 ( Prefab )
·
🧊Unity Basic/프리팹
프리팹 ( Prefab )장난감 공장에서 장난감 로봇을 생산한다고 가정한다.로봇이라는 큰 단위로 묶여있지만 , 이 로봇이 움직이기 위해서는 머리 , 몸통 , 팔 , 다리 등으로 세분화된 요소로 나눠야한다.또한 설계도가 존재하며 이는 대량 생산을 위한 하나의 데이터가 된다.정성스럽게 만든 오브젝트를 동일하게 여러개 배치해야 할 경우이 설계도를 미리 작성해 놓고 필요할 때마다 유니티에게 대량 생산하게 만들어야 한다.프리팹과 인스턴스의 차이는 붕어빵틀과 붕어빵으로 비유할 수 있다.붕어빵은 붕어빵틀에 각인된 형태대로 구워진다. 지느러미가 하나 더 생기거나 , 꼬리가 두 개가 되는 경우는 없다.프리팹은 붕어빵틀과 같다. 때문에 프리팹을 만들 때에는 인스턴스가 어떤 형태를 갖게 될지 생각하며 만들어야 한다. 프리..
생성과 파괴 ( Instantiation & Destruction )
·
🧊Unity Basic/게임오브젝트
생성과 파괴 ( Instantiation & Destruction )유니티 엔진은 마법도구가 아니다.PC에서 구동되며 , 프로그래머는 PC 가 제공하는 자원을 효율적으로 다룰 수 있어야 한다.사용자가 간단히 다룰 수 있는 오브젝트조차 메모리와 연산에 대한 효율을 생각해야 한다.효율적이지 않다면 대안을 사용할 수 있어야 한다. 프로그래밍에서의 생성과 파괴는 메모리를 할당하고 , 해제하는 것과 같다.이때 데이터가 어떤 메모리에 올라가고 , 각각 메모리마다 어떤 특성을 가지고 있는지 아는 것이 중요하다.특히 힙 ( Heap ) 메모리에 데이터가 올라가고 내려가는 것은 큰 연산을 필요로 한다.최적화를 위해서 왜 연산이 발생하는지 , 어떻게 막을 수 있는지 알아야 한다. 유니티에서 대부분의 게임 오브젝트는 씬 (..
Attribute ( 애트리뷰트 )
·
🧊Unity Basic/애트리뷰트
Attribute ( 애트리뷰트 )C# 이나 Unity 에서 속성 또는 메타데이터를 코드 요소 ( 클래스 , 메서드 , 변수 등 )에 추가 정보로 표시할 때 사용하는 기능이다.Attribute ( 애트리뷰트 ) 는 코드에 의미를 추가하는 주석 같은 존재프로개름의 클래스 , 메서드 , 필드 , 프로퍼티 등에 추가적인 정보를 부여하는 메타데이터코드 자체에는 영향을 주지 않는다.컴파일러나 런타임 , 혹은 다른 툴이 이 정보를 읽고 동작을 다르게 하도록 지시하는 역할을 한다.단순한 주석이 아니라 , 실제 코드 안에서 읽히고 활용되는 구주화된 데이터이다.여기서는 Unity 에서의 애트리뷰트의 개념에 대해 정리한다. Unity 에서의 Attribute코드에 부가적인 정보나 지시문을 붙인다.Unity 에디터나 엔진이..
오브젝트 ( GameObject )
·
🧊Unity Basic/게임오브젝트
오브젝트 ( GameObject )게임을 플레이 하다 보면 "오브젝트" 라는 명층을 한 번쯤은 들어봤을 법한 용어이다.주로 게임에서는 아이템을 지칭하거나 맵 상에서 상호작용 할 수 있는 요소를 지칭하는 용어로 쓰인다.하지만 게임 개발자에게 오브젝트란 조금 더 넓은 범위에 속하는 개념이다. 유니티에서 오브젝트는 게임 세상에 존재하는 모든 것의 기본 단위이다.쉽게 말하면 유니티 세계 안의 모든 것들은 전부 게임오브젝트이다 라고 할수 있다. 모든 물체는 기능과 형태를 가진다.물체라는 것은 자신에게 주어진 기능과 성질을 간직하고 있는 매개체라고 할수 있다.유니티는 가상 공간에서 게임 오브젝트에 기능과 성질을 부여하기 위해 오브젝트에 컴포넌트라는 개념을 사용한다. 오브젝트는 유니티 씬 ( Scene ) 안에서 존..
251014
·
📖TIL
오브젝트오브젝트는 물체 , 대상 , 잭체를 의미우리가 세상을 바라볼 때 인식하거나 다룰 수 있는 구체적인 것 예시 : 의자 , 책상 , 컵 같은 물리적 사물Unity 에서의 Object유니티에서 오브젝트라고 하면 보통 GameObject 를 의미한다 GameObject = Unity Scene유니티 Scene게임의 한 단계 또는 장면을 구성하는 모든 요소를 담고 있는 파일씬 간의 전환은 SceneManager.LoadScene( ) 함수를 통해 이뤄진다모든 게임 오브젝트가 가지는 공통적인 컴포넌트가 존재한다.모든 오브젝트는 '매개체', 즉 물체라고 볼 수 있다.물체가 가지는 기본적인 특징인 크기, 회전, 위치에 대한 정보를 가지고 있어야 한다. 그렇기에 게임 오브젝트는 Transform 이라는 컴포넌트를..
MonoBehaviour 상속이 안될 때 해결 방법
·
🧊Unity Basic/라이프사이클
▲이런 현상이 발생하여 상속이 안되는 경우 ( 자동 완성이 안되는 경우 ) ▲윈도우 검색 창에서 Visual Studio Installer 를 검색하여 연다. ▲ 이런 창이 뜨면 수정을 클릭한다. ▲ 유니티 게임 개발에 체크 , 유니티 허브는 체크 해제한 후 하단의 수정 클릭 ▲Visual Studio 를 켜고 , 솔루션 다시 빌드를 진행한다. ▲프로젝트를 완전히 닫고 재부팅 후 열어주면 자동완성이 된다
Component
·
🧊Unity Basic/게임오브젝트
컴포넌트 ( Component )컴포넌트 ( Component ) 는 유니티에서 GameObject 에 기능을 부여하는 스크립트나 요소를 말한다.GameObject 는 껍데기 ( 오브젝트 ) 이고 , 컴포넌트는 그 오브젝트의 능력이나 속성을 부여한다. 예시로 자동차를 만든다고 가정해보자GameObject : 자동차Transform : 위치와 회전 , 크기Rigidbody : 물리 효과 ( 중력 , 질량 등 )Collider : 충돌 감지AudioSource : 소리 재생Script ( MonoBehaviour ) : 움직이는 로직이렇게 여러 컴포넌트가 합쳐져서 하나의 오브젝트가 완성된다. 작동 원리모든 GameObject 는 기본적으로 Transform 컴포넌트를 가지고 있다.나머지는 개발자가 추가 (..