본문 바로가기

TIL

240118 학습 unity 강의 수강

1 - 1

%%repository 를 github에 생성하고 프로젝트를 추가할 때 서순하지 말 것

gitIgnore가 만들어진 이후 ignore대상이 들어와야 해당 부분들이 ignore처리 되는데 
프로젝트를 만들어 이미 ignore 대상이 있는 상태에서 github repository를 만들게 되면 이전 대상은 ignore처리 되지 않아

publish에 문제가 생김

 

%%github 프로젝트 생성하여 올릴 때 순서

repository 생성(ignore 설정) -> 프로젝트 생성 -> 폴더 한 겹 더 싸여있으면 밖으로 뺴주기(D:\git_repository\8week_unity_study 위치에 git, gitignore 등등 있고 D:\git_repository\8week_unity_study \8week_unity_study 에 프로젝트가 생성되었으면 프로젝트 내용을 D:\git_repository\8week_unity_study 로 잘라내기 & 붙여넣기)

 

 

 

1 - 2 Unity 기본 설정들과 tools 사용법

%%프로젝트 : 가장 큰 틀

scene : 게임의 각 장면과 화면을 구성하는 요소(게임메뉴, 게임 플레이 scene, 엔딩 scene 등등)

asset : 게임에 필요한 resource들(이미지, 사운드, 모델 등등)

game object : scene 에 배치되는 모든 요소

 

A : scene 뷰 : 씬의 3d 또는 2d 뷰로 이곳에서 씬 구성 요소 편집 가능

B : game 뷰 : 게임이 실제 실행되는 모습을 보여주는 뷰

C : Hierarchy 뷰 : 현재 씬의 게임 오브젝트 계층 구조를 표시해주고 편집 지원 -> 씬에 존재하는 모든 오브젝트가 나옴

D : Inspector 뷰 : 선택된 게임 오브젝트의 속성, 구성요소를 나타내고 편집 지원

E : Project 뷰 : 프로젝트의 에셋 표시 및 관리

 

B 오른쪽 : Console 뷰 : 게임 실행 중의 로그 및 메시지 표시

 

해당 창을 키는 방법 : window -> general -> 원하는 창을 드래그하여 원하는 곳에 위치

 

 

 

%%tools 사용법

tools : scene 뷰의 이동 회전 확대 축소 등을 수행할 수 있는 기능 모음 (qwerty 를 단축키로 사용)

move (W) : 해당 object의 position 변경

                  오브젝트 선택 후 x, y, z 축 또는 면을 누른 상태로 이동 시킬 수 있음 또는 inspector 창의 position값을 직접 변                    경하여 이동 가능

rotate (E) : 원하는 방향으로 회전 가능(yaw pitch roll) 마찬가지로 inspector 창의 rotation 값을 직접 변경하여 회전 가능

scale (R) : 각 축에 해당하는 크기를 변경 가능 inspector 창의 scale 값을 직접 변경하여 크기 변경 가능

rect (T) : 3D 물체보단 2D object 나 UI에 사용하기 적합한 기능 position과 scale 을 해당 사각형을 움직이는 것으로 한번                  에 변경 가능

transform (Y) : 자주 사용되진 않지만, 앞선 기능을 모두 가지고 있는 기능

 

 

1 - 3

%%object 생성 시 transform reset 습관화!

 

%%프로젝트 편집기(유니티)를 켠 상태에서 .unitypackage 파일을 열면 해당 패키지 내의 만들어진 object들을 프로젝트의 asset으로 받아 사용할 수 있음

 

%%collider : 충돌을 감지하는 component

rigidbody : 물리연산 처리에 필요한 component

 

%%renderer 의 material : 눈에 보여지는 재질(반짝임의 유무, 모양, 색깔 등)

rigidbody 의 material : 물리적 재질(phisics material)로 다른 collider와 부딫혀 충돌이 발생했을 때, 어떻게 물리적으로 움                                        직일 것인지 나타냄

 

%%collider의 isTrigger

꺼져있을 경우 : collision 충돌 -> 프로그램 상에서 충돌 여부 인지 및 실제 뷰 상에서의 충돌도 일어남

켜져있을 경우 : trigger 충돌 -> 프로그램 상에서 충돌 여부 인지하지만 실제 뷰 상에서 충돌이 일어나지 않음

 

 

%%%%%%1-2 과 1-3 공부하며 만든 pong game 의 repository%%%%%%%%%%

 

https://github.com/baedonggeun/8week_unity_study

 

1 - 4

%%에셋 사용 시, 무료 라이선스인지 확인하고 사용하기(저작권 문제 발생할 수 있음)

주로 mit, cc0 등 상용화 가능한 라이선스들로 사용하기

 

%%레이아웃 설정 방법

window -> general -> 원하는 창을 드래그하여 원하는 곳에 위치 후 save layout(11시 방향) 에서 layout 저장하여 사용

 

 

1 - 5

%%MonoBehaviour 클래스는 unity object 와 연결된 스크립트로 동작하게 하는 클래스로 그 외의 용도로 클래스를 사용한다면 해당 클래스를 사용할 필요 없음

 

%%script 라이프 사이클

게임 오브젝트가 생성되어 파괴되기 전까지 호출되는 특정한 메서드들의 순서와 타이밍을 나타냄

스크립트에서 게임 오브젝트의 생성, 초기화, 업데이트, 파괴 등과 관련된 작업 수행

 

https://docs.unity3d.com/kr/2021.3/Manual/ExecutionOrder.html

 

Awake : 게임 오브젝트가 생성될 때 호출 주로 초기화

start : 게임 오브젝트가 활성화해 게임 루프가 시작될 때 호출 주로 초기 설정 및 시작 작업

update : 매 프레임마다 호출 주로 게임 로직의 주요 업데이트

fixedupdate : 물리엔진 업데이트 시 호출 주로 물리적인 시뮬레이션에 관련된 작업 처리

lateupdate : update 메서드 호출 이후 호출 주로 다른 오브젝트의 업데이트 완료된 후 작업 수행에 사용

onenable : 게임 오브젝트가 활성화될 때 호출

ondisable : 게임 오브젝트가 비활성화될 때 호출

ondestroy : 게임 오브젝트가 파괴될 때 호출 주로 자원 정리 및 해제 작업에 사용

 

%%component의 이해

게임 오브젝트에 부착되는 독립적인 기능 모듈

각각의 컴포넌트가 특정한 작업 수행 또는 기능 제공

컴포넌트를 통해 오브젝트의 동작과 특징을 결정

 

component 예시

transform, rigidbody, collider, spriteRenderer, audiosource

 

%%ppu(pixel per unit)

resource를 가져올 때 이미지의 사이즈를 보고 pixel per unit을 조정하여 1사이즈에 맞춰 조정해야 나중에 speed 등 값을 조정할 때 편리해짐(사이즈가 다르면 같은 speed여도 누구는 더 빠르게 가고 누구는 더 느리게 가고 할 수 있음)

 

예시)16x28 사이즈의 이미지일 경우 ppu = 16으로 조정하면 이미지의 가로 길이가 1픽셀에 맞게 적용됨

 

ppu참조

https://bigchoiiistudio.tistory.com/2

 

 

%%world 좌표와 local 좌표

world 좌표 : object 위치의 절대값 -> .position

local 좌표 : 부모로부터의 object의 위치 -> inspector 에 보여지는 좌표 -> .localPosition

scale rotation 모두 해당 내용 적용됨!

 

예시)

부모의 좌표가 (2, 0)이고 자식의 좌표가 (0, 1)인 자식 sprite 의 world 좌표는 (2, 1) 이지만, local 좌표는 (0, 1)

 

 

%%유니티 script의 변수 생성

float speed = 5f;         //유니티 inspector 에서 접근하지 못하는 변수
[SerializeField]private float speed = 5f;         //유니티와 강제적으로 동기화하여 값을 바꿀 수 없게 만든 변수
public float speed = 5f;            //유니티 inspector 에서 접근하여 변경 가능한 변수

 

 

%%같은 시간동안 같은 픽셀만큼 움직이게 만들기

 void Update()
 {
     float x = Input.GetAxis("Horizontal");
     float y = Input.GetAxis("Vertical");

     transform.position += new Vector3(x, y);
 }

 

위와 같이 코드를 작성한다면 컴퓨터의 사양에 따라 fps가 바뀔 수 있음 그렇기 때문에 fps가 빠르면 빠르게 움직이고 느리면 느리게 움직이는 문제가 발생하게 됨

이를 해결하기 위해 다른 fps더라도 "한 프레임 당 실행하는 시간"을 의미하는 time.deltaTime을 곱해주면 같은 이동속도를 가지게 됨(60fps 면 1/60이 곱해지므로 1로 고정)

 

void Update()
 {
     float x = Input.GetAxis("Horizontal");
     float y = Input.GetAxis("Vertical");

     transform.position += new Vector3(x, y) * speed * Time.deltaTime;
 }

 

참고) edit -> program setting -> input manager 에서 axis horizontal, vertical 값 수정해서 속도 조절할 수도 있음

 

 

%% ?. :  ?.앞의 내용이 Null이 아닐 경우만 뒤의 내용 실행

예시)OnMoveEvent?.Invoke(direction);        

 

%% event : 외부에서 호출하지 못하게 막는 기능

public event Action<Vector2> OnMoveEvent;          

 

 

%%input system 사용법

unity package manager : window -> package manager 로 접근하여 unity system install

 

참고할 내용)

https://daekyoulibrary.tistory.com/entry/Unity-New-Input-System-1

 

[Unity] New Input System #1 | 세팅하기

/* 수업 들으며 했던 내용들을 실습해보며 정리한 글입니다. 잘못된 부분이 있다면 말씀해주세요. */ 게임은 특정 플랫폼 하나만을 겨냥하고 개발하는 경우는 거의 없다. 스케일이 커지게 되면 PC

daekyoulibrary.tistory.com

 

 

 

%%옵저버 패턴 : ??

 

 

 

 

 

 

%%%%%%1 - 4 ~ 1 - 5 github 주소 %%%%%%%%%

 

https://github.com/baedonggeun/8week_unity_study_2

 

'TIL' 카테고리의 다른 글

240129 학습 Unity 강의수강  (0) 2024.01.31
240128 학습 Unity 강의수강  (0) 2024.01.31
240116 학습 c# text_RPG 제작  (0) 2024.01.17
230115 학습 c# text_RPG 제작  (0) 2024.01.17
240114 학습 c# text_RPG 제작  (0) 2024.01.17