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
%%옵저버 패턴 : ??
%%%%%%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 |