⚙️ 엔진

2가지 방법 중 택1 1. 솔루션 탐색기 - 시작 프로젝트로 설정 클릭 2. 빌드 메뉴에서 원하는 클래스 클릭하기
1. 단축키 정리카메라 전후 이동, 좌우 회전좌클릭 + 드래그마우스 임의의 버튼 + WASD 카메라 상하 이동마우스 임의의 버튼 + Q/E 카메라 회전우클릭 + 드래그오브젝트가 선택된 상태에서 Alt + 좌클릭 + 드래그 상하좌우 이동가운데 버튼오브젝트가 선택된 상태에서 Alt + 가운데 버튼 + 드래그alt를 누르지 않음 : world 축 기준으로 이동 = 하늘을 바라봄alt를 누름 : 카메라를 기준으로 이동 콘텐츠 브라우저 열기ctrl + space bar 카메라 포커스 정렬오브젝트가 선택된 상태에서 F 카메라 확대 축소오브젝트가 선택된 상태에서 Alt + 우클릭 + 드래그 트랜스폼 툴이동 W회전 E스케일 R 아래로 정렬오브젝트가 선택된 상태에서 End 2. 모델링 수정 수정하기 전에 에셋을 백업해두..
1. 언리얼 엔진의 자동 메모리 관리🌟 C++ 언어 메모리 관리의 문제점C++은 저수준으로 메모리 주소에 직접 접근하는 포인터를 사용해 오브젝트를 관리한다.그러다보니 프로그래머가 직접 할당(new)와 해지(delete) 짝 맞추기를 해야한다.이를 잘 지키지 못하는 경우 다양한 문제가 발생할 수 있음잘못된 포인터 사용 예시메모리 누수 : new를 했는데 delete 짝을 맞추지 못함. 힙에 메모리가 그대로 남아있는 경우허상 포인터 : 다른 곳에서 이미 해제해 무효화된 오브젝트의 주소를 가리키는 포인터와일드 포인터 : 값이 초기화되지 않아 엉뚱한 주소를 가리키는 포인터잘못된 포인터 값은 다양한 문제를 일으키며, 한 번의 실수는 프로그램을 종료시킴게임 규모가 커지고 구조가 복잡해질수록 프로그래머가 실수할 확..
✨ 변수명 수정수정하고 싶은 변수명에 마우스를 대고 ctrl + r + r ✨ 자동 정렬ctrl + a 👉 k 👉 f
🍧 1. 언리얼 구조체데이터 저장/전송에 특화된 가벼운 객체대부분 GENERATED_BODY 매크로를 선언해준다.리플렉션, 직렬화와 같은 유용한 기능을 지원함GENERATED_BODY를 선언한 구조체는 UScriptStruct 클래스로 구현됨이 경우 제한적으로 리플렉션을 지원함 👉 속성 UPROPERTY만 선언할 수 있고 함수 UFUNCTION은 선언할 수 없음언리얼 엔진의 구조체 이름은 F로 시작함대부분 힙 메모리 할당(포인터 연산)없이 스택 내 데이터로 사용됨NewObjectAPI를 사용할 수 없음 🌟 리플렉션 관련 계층 구조언리얼에서는 구조체와 클래스가 구조, 사용법이 다르다. 🌟 MyGameInstance(h, cpp)// Fill out your copyright notice in the..
🟩 언리얼 컨테이너 라이브러리언리얼 엔진이 자체 제작해 제공하는 자료구조 라이브러리줄여서 UCL(Unreal Container Library)라고도 함언리얼 오브젝트를 안정적으로 지원하며 다수 오브젝트 처리에 유용하게 사용됨언리얼 C++은 다양한 자료구조 라이브러리를 직접 만들어 제공하고 있음실제 게임 제작에 유용하게 사용되는 라이브러리로 세 가지를 추천함 👉 TArray, TMap, TSet (T=템플릿) 🟩 C++ STL과 언리얼 컨테이너 라이브러리의 차이점C++ STL은 범용적으로 설계되어 있다.C++ STL은 표준이기 때문에 호환성이 높다.C++ STL은 많은 기능이 엮여 있어 컴파일 시간이 오래 걸림언리얼 컨테이너 라이브러리는 언리얼 엔진에 특화되어 있음언리얼 컨테이너 라이브러리는 언리얼 ..
🌟 강한 결합클래스들이 서로 의존성을 가지는 경우Card가 없는 경우 Person이 만들어질 수 없는 경우 👉 이 때 Person은 Card에 대한 의존성을 가진다고 한다.핸드폰에서도 인증할 수 있는 새로운 카드가 도입된다면?🌟 느슨한 결합실물에 의존하지 말고 추상적 설계에 의존하라 (DIP 원칙)왜 Person은 Card가 필요한가? 출입을 확인해야 하기 때문출입에 관련된 추상적인 설계에 의존하자.ICheck를 상속받은 새로운 카드 인터페이스를 선언해 해결이러한 느슨한 결합 구조는 유지 보수를 손쉽게 해줌🟩 느슨한 결합의 간편한 구현 - 델리게이트함수를 오브젝트처럼 관리하면 어떨까? 🌟 함수를 다루는 방법함수 포인터를 활용한 콜백 함수 구현가능은 하나 이를 정의하고 사용하는 과정이 꽤나 복잡함..
🟩 컴포지션객체 지향 설계에서 상속이 가진 Is-A 관계만 의존해서는 설계와 유지보수가 어려움컴포지션은 객체 지향 설계에서 Has-A 관계를 구현하는 설계 방법컴포지션의 활용 : 복합적인 기능을 거대한 클래스를 효과적으로 설계하는데 유용하게 사용할 수 있음🌟 SOLID (좋은 객체지향 설계 패턴을 제작하기 위한 모던 객체 설계 기법)단일 책임 원칙 Single Responsibility Principle : 하나의 객체는 하나의 의무만 가지도록 설계한다.개방 페쇄 원칙 Open-Closed Principle : 기존에 구현된 코드를 변경하지 않으면서 새로운 기능을 추가할 수 있도록 설계한다.리스코프 치환 원칙 Liskov Substitution Principle : 자식 객체를 부모 객체로 변경해도 ..
🟩 인터페이스객체가 반드시 구현해야 할 행동을 지정하는데 활용되는 타입다형성의 구현, 의존성이 분리된 설계에 유용하게 활용 🌟 특징1. 인터페이스를 생성하면 두 개의 클래스가 생성됨U로 시작하는 타입 클래스 : 클래스 타입 정보 제공I로 시작하는 인터페이스 클래스 : 실질적인 설계 및 구현2. 객체를 설계할 때 I 인터페이스를 사용U 타입 클래스 정보는 런타임에서 인터페이스 구현 여부를 파악하는 용도로 사용됨실제로 U 타입 클래스에서 작업할 일은 없음인터페이스에 관련된 구성 및 구현은 I 인터페이스 클래스에서 진행3. C++ 인터페이스의 특징추상 타입으로만 선언할 수 있는 Java, C#과 달리 언리얼은 인터페이스에도 구현이 가능함 🌟 언리얼 엔진에서 게임 컨텐츠를 구성하는 오브젝트의 설계 예시월드..
🚀 퀵셀 메가스캔 에셋 다운로드원하는 에셋을 선택한 뒤, 컴퓨터 사양에 맞는 퀄리티를 선택하여 다운로드한다. (nanite가 최고 사양)※ 주의 : 다운받을 용량이 충분한지 확인한다. 계정 아이콘을 클릭하여 preference에서 다운받을 위치를 선택할 수 있다.다운로드한 뒤 add된 위치는 항상 Megascans 폴더 하위에 저장된다.다운로드 받은 actor을 view port에 추가한 뒤, F를 누르면 해당 actor를 크게 확인할 수 있다. (actor 삭제는 del or backspace) 퀵셀 메가스캔에 있는 에셋을 바로 view port에 드래그 앤 드롭으로 다운로드 가능하다.다운을 받는 중에는 low 퀄리티이지만, 다운을 다 받고난 뒤에는 대용량 데이터로 교체된다.한 번에 여러 개의 에셋을..
🚀 View Port🌟 우클릭 + 마우스/WASD 이동시 화면 이동 가능🌟 우클릭 + Q/E를 누르면 상하로도 이동 가능🌟 좌클릭 + Alt 이동시 화면 이동 가능 🌟 Play 화면에서 Esc 클릭시 벗어나기 가능 🚀 Actor (=object) 1. 화살표 = 기즈모, 드래그시 이동 가능2. red = X축, green = Y축, blue = Z축3. W 기본 / E 회전 / R 크기 변경🌟 가운데 흰색점을 이용하여 크기 변경시 비율을 유지한 채 변경 가능하다.🌟 특정 두 축 사이를 눌러서 크기/위치 변경도 가능하다. 4. Alt를 누르면 복제 가능5. Shift를 누르면 다수의 actor를 선택 가능하다. 🟩 snap 기능view port 우측 상단의 조절값으로 이동, 변경 등 값 조..
예제 Person : Name(이름), Year(연차) - Student : Id(학번) - Teacher : Id(사번) Person에는 DoLesson이라는 가상 함수가 있음 - Student의 DoLesson은 수업을 듣는 행동 - Teacher의 DoLesson은 수업을 가르치는 행동 Object 항상 ~.generated.h 헤더가 마지막에 위치해야 한다. 원래 헤더가 마지막 GameInstance 원래 헤더가 항상 위에 위치 GameInstance // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "Engine/GameI..
peewoong
'⚙️ 엔진' 카테고리의 글 목록 (2 Page)