처음 배우는 유니티 공부 시작
일단 유니티 프로그램 다운 후 에디터 설치를 통해 유니티 버전 다운을 해주고 라인센스는 무료로 받아준다.
이 다음 이제 새 프로젝트를 통한 프로젝트 생성하면 되는데
누르면 템플릿 옆의 아이콘에 SRP 라는 글씨가 있다.
Unity, Unreal 엔진 -
Builtin RenderingPipeline = 초기의 렌더링 파이프라인 -
URP = 경량화 (최적화에 맞춰져있음, 모바일, 콘솔 등), 단 그래픽을 고급화 하기는 힘듬(경량화를 했기 때문)
HDRP = URP의 업그레이드 버전, 퀄리티에 집중한 렌더링 파이프 파인, 고퀄게임을 만들때 사용
렌더링 파이프라인에서 2D와 3D의 차이는 VS 에서 월드행렬변환의 P (투영 변환)과정에서 차이가 난다.

일단 처음 하는 Unity이기 때문에 2D로 Universal 2D로 프로젝트를 만든다.
유니티의 카메라를 누르면 오른쪽 Edit창에 projection의 방법을 바꾸는 부분이 있다.
현재는 2d이기 때문에 Orthographic 직교 투영의 직사각형의 모양이지만)
이거를 Perspective 원근 투영으로 바꾸면

이러한 형태로 바뀐다 이는 깊이값을 반영하여 화면에 투영하는 방식으로 원근감을 제공해준다.

다음 LayOut탭을 통해 Visual과 비슷하게 창을 맞추어주자
이렇게 만드니 Unreal보다 조금 편한느낌이 있다
근데 지금 이렇게 해보니 우리는 2D 프로젝트로 만들었는데 투영 방식에 따라 3D로 만들 수 있다
하지만 차이점이 분명하게 하나 있다
유니티는 기본적으로 3D 툴을 기반으로 만들어져 있다 2D에서 3D로 만드는 것은 가능하나
3D 프로젝트로 만들어서 2D로 만드는것은 불가능하다.
왜냐 - > 2D 패키지 기능이 딸려오지 않아서 이다. 따로 받아야 함 그래서 3D로 만들면 2D 오브젝트가 없다

만약 프로젝트를 백업하고 싶다라고 한다면 내 프로젝트의 폴더를 압축하는것이 아닌
해당 필요한 파일들만 압축을 해준다.
나머지 폴더와 파일들은 유니티를 실행하면 자동으로 만들어준다.

이제 유니티의 오른쪽 Assets 폴더안에 Scripts 폴더를 만들고 그 안에 Tutorial Script 파일을 만들어준다.
해당 파일을 더블클릭하면 Visual Stdio가 켜진다.

간단하게 출력 메세지를 적어주고 실행해보면 아무것도 변하지 않을건데
이는 아직 할당을 해주지 않아서 이다.
저장 후 유니티 Hierarchy 창에서 우클릭을 통해 Create Empty를 해주면
디테일 패널에 Transform만 있는 GameObejct가 생성된다.
그 다음 아까 만든 Tutorial 파일을 드래그를 통해 컴포넌트를 추가하거나 Add Component를 통해 찾아서 추가하면 된다.
추가한 다음 실행하면 유니티 하단의 Console창에 내가 적은 Welcom MyWorld를 확인할 수 있다.

이번에는 각 자료형들의 크기를 출력해볼려고한다 글쓴이는 C++밖에 해보지 않았기 때문에 필요

이렇게 하고 출력해보면 char의 크기가 다르다
c++에서는 1 byte인데 c#에서는 2 byte이다
long도 c++에서는 4인데 c#은 8이다.
그리고 c#에는 long long이 없다

이제 변수를 선언하는 것을 알아볼건데
struct와 class가 가장 큰 차이를 가지고 있다.

c++에서는 기본 접근 지정자가 public인데
c#은 private로 되어있어 struct에서 public으로 설정해주어야만 접근이 가능하다.



그러면 이번에는 Damage 함수를 만들어서 출력해보면 90이 아닌 100이 나온다.
포인터를 안쓰고 값만 넣었기 때문에 내부 값이 변하지 않는다.


하지만 이 struct는 class로 바꾼다면? 놀랍게도 90이 나온다.
왜냐 이를 알려면
c#에서의 포인터의 힘을 가진 개념을 알아야 한다
일단 Struct는 value형, class는 Reference형을 가진다.

vlaue Type(값 형식)과 Reference Type(참조 형식)은 무엇이냐
c#의 Data Type의 다이어그램이 있다.
일반적인 클래스 다이어 그램의 상속구조는 아니다.
위 표를 보면 알 수 있듯 Object, string, system.array, class로 정의하는 type들은 Reference Type이고
System.valueType, bool, byte, int, float, char, enum, struct로 정의하는 type들이 Value type이다코드로 정의한 모든 배열 = int[] a와 같은 것들을 말한다.
그러면 Type에 따라 무엇이 다른가
1. 메모리 저장 위치
value Type는 주로 Stack, Reference Type는 Heap에 저장한다(참조 주소는 Stack).
2. 변수의 내용
value는 데이터의 실제 값 자체를 포함하는 방면 Reference는 데이터가 있는 메모리 주소(참조)를 포함한다.
3. 할당
value는 값을 새로 복사하는 독립적인 형태지만 Reference는 참조 즉 주소만 복사하기에 같은 객체를 공유한다
4. 기본값
value는 int형이면 0 , Reference는 null로 비어있음을 알린다

이제 두 Type에 따른 예시를 공부해보자

이를 아까 유니티에서 한거처럼 class로 바꾸면
여기서 한가지 주의 할 점이 있다 String 이다.
Reference Type중에서 string은 조금 특별하다.
string은 Reference Type지만 불변의 성질을 가지고 있어 값을 수정하면 기존 것이 바꾸는 것이 아니라
새로운 문자열 객체를 생성한다.
그래서 마치 값 형식처럼 동작하는 것처럼 보일 경우가 있다.
데이터를 작고 단순하게 관리를 한다면 struct, 복잡한 로직과 상속이 필요한 경우는 class를 사용한다.
이제 다시 유니티로 돌아와서 또 한가지 알아야 하는 것이 있다.
검색에 Unity Naming을 치면 공식적으로 코드를 작성할때에 대한 Naming규칙들이 있다.
물론 이런것은 사람들 회사 마다 다를 수는 있으나 엔진에서 권장하는 공통적인 것을 일단 따를려고 한다.

해당 부분에 들어가면 깃허브가 뜨는데 code 다운을 해준다.


다음 해당 파일을 visual로 열어주면 위와 같은 식으로 코드스타일에 대한 예시를 확인할 수 있다.
이제 다음 글부터는 본격적으로 유니티에 대해 시작해보도록 하겠다.
'Unity' 카테고리의 다른 글
| Unity(6) - Atlas Block Map & Crafting Table (2) (0) | 2026.03.10 |
|---|---|
| Unity(5) - Inventory & Crafting (1) | 2026.03.05 |
| Unity(4) - Ray Cast & Block Destroy (0) | 2026.02.24 |
| Unity(3) - Block Map (1) | 2026.02.19 |
| Unity(2) - Basic Move, Rotation (0) | 2026.02.13 |