Unity 오브젝트 제어
키보드 입력으로 오브젝트 제어
- GetKey : 키를 누르고 있는 동안 계속 true 반환
- GetKeyDown : 키를 처음 누른 순간에만 한번 true 반환
- GetKeyUp : 키를 뗀 순간에만 한번 true 반환
WASD를 입력받아 앞,뒤,옆으로 오브젝트가 이동되도록 구현하고 deltaTime을 곱해서 프레임 속도와 무관하게 일정한 속도를 유지하도록 함
Time.deltaTime의 중요성
- 프레임 사이의 경과 시간을 의미(초 단위)
- 다양한 하드웨어 환경에서도 일정한 속도로 이동을 보장
- Time.deltaTime을 곱하지 않으면 고성능 PC에서는 매우 빠르게, 저성능 PC에서는 매우 느리게 움직이는 문제가 발생
public class Movement : MonoBehaviour
{
//public <- 유니티 에디터 상에서 보이도록 설정
public float moveSpeed = 10f;
void Start()
{
}
//this : 현재 스크립트가 들어가있는 오브젝트
//this 빼도됨
void Update()
{
//transform.position = transform.position + Vector3.forward * moveSpeed;
// 어몽어스 위치 앞쪽->(0,0,1) 속도 조절 변수
if(Input.GetKey(KeyCode.W)) //앞으로
{
transform.position += Vector3.forward * moveSpeed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.S)) //뒤로
{
transform.position += Vector3.back * moveSpeed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.A)) // 왼쪽으로
{
transform.position += Vector3.left * moveSpeed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.D)) // 오른쪽으로
{
transform.position += Vector3.right * moveSpeed * Time.deltaTime;
}
}
}
오브젝트에 Script추가
오브젝트에 script를 추가했을때 2개 이상의 스크립트도 추가 가능하고 선택을 통해 활성화, 비활성화 할수있음
GitHub와 Unity 프로젝트 연동
GitHub와 프로젝트를 연동하기위해 GitHub 계정을 생성해주고 필요하다면 Personal Access Token(PAT)을 생성
이후 Repository생성. 불필요한 파일들이 저장소로 올라가지않게 .gitignore에 Unity로 설정해줌
GitHub Desktop을 통해 Unity 프로젝트 연동
저장소를 만들고 GitHub DeskTop과 연동하기위해 바로 오픈해주고 local저장소 경로를 지정해주면 해당 폴더에 .git, .gitignore파일이 생기는데 이 두개파일을 작성중인 Unity프로젝트 위치로 옮겨주게 되면 해당 프로젝트를 인식하게됨
GitHub deskTop의 Changes탭에서 Local저장소의 변경점을 확인하고 코멘트와함께 commit해주게되면 push를 통해 github저장소로 올라감
프로젝트 Commit, Push, Pull
프로젝트내 파일이 생성되거나 변경되면 Changes탭에서 확인하고 Commit해주면 Push을 통해 저장소로 올림
반대로 github저장소에서 파일에 접근해 파일을 수정하면 Pull을 통해 Local저장소로 변경된 파일을 가져옴
Unity C# 기초
MonoBehaviour의 역할과 활용
- Unity 스크립팅의 기본 클래스
- 게임 오브젝트에 부착되어 다양한 이벤트 함수를 제공
- start()
- update()
- Unity 에디터와의 연동을 담당
- Inspector창에서 public 변수 노출 및 편집
- OnDrewGizmos()등을 통한 에디터 시각화 기능
Class와 struct의 차이
참조타입(Reference Type)은 어떤 메모리 공간을 기리키는 것
값 타입(Value Type)은 자신의 메모리 공간에 데이터를 가지는 구조, 상속받지 못함
public class Study_Class
{
public int number;
public Study_Class(int number)
{
this.number = number;
}
}
public struct Study_Struct
{
public int number;
public Study_Struct(int number)
{
this.number=number;
}
}
public class Study_ClassStruct : MonoBehaviour
{
void Start()
{
Debug.Log("클래스 ---------------------------------- ");
Study_Class c1 = new Study_Class(10);
Study_Class c2 = c1;
Debug.Log($"c1 : {c1.number} / c2 : {c2.number}");
c1.number = 100;
Debug.Log($"c1 : {c1.number} / c2 : {c2.number}");
Debug.Log("구조체 ---------------------------------- ");
Study_Struct s1 = new Study_Struct(10);
Study_Struct s2 = s1;
Debug.Log($"s1 : {s1.number} / s2 : {s2.number}");
s1.number = 100;
Debug.Log($"s1 : {s1.number} / s2 : {s2.number}");
}
}
위 코드 실행결과를 보면 class는 c1.number에 변화를 줬을때 c1이 가리키는 메모리의 값이 변경된것이기 때문에 c1자체의 값이 변경된게 아님. 고로 c1과 c2는 동일하게 변경된 값으로 출력되는걸 확인할 수 있다.
하지만 struct는 자신의 메모리 공간에 값을 가지고있는것이기때문에 s1.number는 100의 값을 가지게되고 s2는 변하지않는거를 확인 가능
visual studio 인코딩 문제 해결
강의중 생성된 스크립트를 GitHub DeskTop을 통해 올리려할때 자꾸 한글이 깨지는 모습이 있었는데 visual studio에서 cs파일을 생성할때 인코딩이 제대로 되지않아서 일어난 문제로 확인
visual studio에서 도구 - 옵션 - 텍스트 편집기 - C#을 통해 들어와 .editorconfig파일을 생성해서 안에 인코딩 내용 추가을 추가해주고 새로 스크립트 파일을 생성해 저장해보면 제대로 한글이 나오는걸 확인 가능!
[*]
charset = utf-8
오늘의 학습 요약
- 키보드 입력 처리 방법과 Time.deltaTime을 통한 일관된 움직임 구현
- GitHub와 GitHub DeskTop의 Unity 프로젝트 연동 방법 및 버전 관리 연습
- 클래스와 구조체의 차이점과 메모리 할당 방식 기초
- visual studio 인코딩 문제 해결
'멋사교육' 카테고리의 다른 글
멋쟁이사자처럼부트캠프 유니티 게임 개발 5기 8일차 (0) | 2025.05.22 |
---|---|
멋쟁이사자처럼부트캠프 유니티 게임 개발 5기 7일차 (2) | 2025.05.21 |
멋쟁이사자처럼부트캠프 유니티 게임 개발 5기 5일차 (2) | 2025.05.19 |
멋쟁이사자처럼부트캠프 유니티 게임 개발 5기 4일차 (0) | 2025.05.16 |
멋쟁이사자처럼부트캠프 유니티 게임 개발 5기 3일차 (2) | 2025.05.15 |