'오늘의 일에서 나는 어떤 것을 배웠는지' - 학습
1. 유니티와 컴포넌트
패턴 => 표준화한 것
싱글턴 패턴 => 하나만 존제
옵저버 패턴 => 이벤트 알리미
MVC 패턴 => 모델, 뷰, 컨트롤러
컴포넌트 패턴 => 유니티에서 게임 오브젝트의 기능을 모듈화하는 방식
게임 오브젝트 => 유니티의 개별 요소들을 지칭
컴포넌트 => 게임 오브젝트의 기능. 스크립트, 렌더러, 콜라이더, 라이트 등..
2. 벡터와 좌표계
벡터 => 스트랙터 / 값형
(화살표)(그래프)
벡터의 합 => 각 좌표값을 단순히 더하면 된다
놈(Norm) / 노멀라이즈
좌표계
로컬 좌표, 월드 좌표
= 상대 좌표, 절대 좌표.
3. 싱글턴 패턴
스태틱 변수
-고정된 메모리 위치에 할당
-해당 클래스의 모든 인스턴스에서 동일 값을 공유
스태틱 메서드
-클래스에 속함. 인스턴스와 무관한 메서드.
-인스턴스를 생성하지 않아도 호출 가능.
싱글턴 패턴
-어떤 인스턴스가 하나만 존재하도록 보장하는 패턴
스태틱 변수와 스태틱 메서드를 활용해 구현
싱글톤1 (국룰 싱글톤)
-게임 매니저 오브젝트를 씬들에 배치하고,
스크립트는 이미 존재시 자기 삭제하도록.
4. Start와 Awake
Awake
프로그램에서 가장 먼저 호출된다.
자기 자신을 초기화하는 코드를 주로 배치
Start
다른 모든 스크립트의 Awake가 실행된 후 실행되기 시작한다.
초기화 완료 후 게임 오브젝트가 활성화 할 때 호출 됨
5. 델타 타임
-프레임 간 시간 간격
-다른 성능의 기기여도 같은 아웃풋 보장
6. 프리팹
재사용 가능한 오브젝트 템플릿
프리팹 특징
-원본유지
-컴포넌트 및 설정
-인스턴스 생성
7. 씬 전환 시 데이터 유지
PlayerPrefs.
PlayerPrefs 클래스: 유니티에서 간단한 데이터를 저장하고 로드하는데 사용하는 클래스
DontDestroyOnLoad 메서드
특정 오브젝트를 씬 전환시 파괴되지 않도록 설정함
8. 레이어 마스크
비트연산으로 계산된다.
'오늘의 나는 무엇을 잘했는지' - 성취
개인과제- ATM기기 구현의 로직을 미리 작성(pre-write)해봤다
필요한 클래스 / 변수 / 메서드
Account_Manager.cs
=================================================================
구성품
//-회원 가입- -로그인- 관련 모든 텍스트 및 인펏박스 등록
계정을 저장하는 클래스
account
{
ID를 저장하는 변수
String ID
패스워드를 저장하는 변수
String PW
소지 잔금을 저장하는 변수
Int account_Money
로그인 상태를 저장하는 변수
bool isLog_in
}
계정 리스트를 저장하는 리스트
account_list<account>
새 계정을 생성하는 메서드
account Sign_up()
로그인하는 메서드
void Log_in()
로그아웃하는 메서드
void Log_out
=================================================================
ATM_Manager.cs
=================================================================
//싱글턴 처리
구성품
public (텍스트 및 인펏박스들 정의)
public delegate void StateChangedEventHandler(string newState); //이벤트 델리게이트 정의
public event StateChangedEventHandler OnStateChanged; //실제 이벤트 정의
private void HandleStateChanged(string newState) //이벤트 핸들러 메서드
{
Debug.Log("상태가 변경되었습니다: " + newState);
//current_State 값이 변경될 때마다 current_State 값에 따라서
각 UI와 텍스트들을 setAcitive(true/false) 전환
}
OnStateChanged += HandleStateChanged; // 이벤트 핸들러 등록
String current_State //현재 상태를 저장하는 실제 변수
public string CurrentState_Manager //현재 상태 값을 변경하고 인보크를 발동하는 매니저 프로퍼티
{
set //변경될 시
{
if (current_State != value)
{
current_State = value;
OnStateChanged?.Invoke(current_State);
}
}
}
소지 현금을 저장하는 변수
Int Cash
입금하는 메서드
void Deposit_Cash()
1. 현재 로그인 된 계정을 확인
-account_list<account>에서 isLog_in ==true인 계정을 찾는다.
1-1. 로그인 된 계정이 없을 경우 에러 출력
2. 현금을 입력금액과 비교
2-1. 현금이 입력금액보다 적을 경우 에러 출력
3.
해당 계정의 account_Money + 입력금액
Cash - 입력금액
출금하는 메서드===========================================
void Withdraw_Account_Money()
1. 현재 로그인 된 계정을 확인
-account_list<account>에서 isLog_in ==true인 계정을 찾는다.
1-1. 로그인 된 계정이 없을 경우 에러 출력
2. 입력금액을 해당 계정의 account_Money와 비교
2-1. account_Money가 입력금액보다 적을 경우 에러 출력
3.
Cash + 입력금액
해당 계정의 account_Money - 입력금액
=====================================================
송금하는 메서드===========================================
void Send_Account_Money(string input_Account_name)
1. input_Account_name이 존재하는지 확인
-account_list<account>에서 ID == input_Account_name인 계정을 찾아 저장한다.
1-1. ID가 일치하는 계정이 없을 경우 에러 출력
2. 현재 로그인 된 계정을 확인
-account_list<account>에서 isLog_in ==true인 계정을 찾는다.
1-1. 로그인 된 계정이 없을 경우 에러 출력
2. 입력금액을 해당 계정의 account_Money와 비교
2-1. account_Money가 입력금액보다 적을 경우 에러 출력
3.
1에서 저장한 계정의 account_Money + 입력금액
해당 계정의 account_Money - 입력금액
=====================================================
에러 메세지를 출력하는 메서드=================================
void Error_Popup(string error_Message)
=====================================================
=================================================================
'오늘의 나는 어떤 문제를 겪었는지, 앞으로 어떻게 해결할 것인지' - 개선
유니티 숙련 주자에 접어든 만큼 더 적극적으로 주어진 강의를 수강할 뿐만 아니라 학습에 집중하고 필요한 지식을 내 것으로 정리하고 습득하기 위해 더 노력해야겠다.
'TIL' 카테고리의 다른 글
2024/2/5 TIL (0) | 2024.02.05 |
---|---|
2024/2/2 TIL (0) | 2024.02.02 |
2024/1/31 TIL (0) | 2024.01.31 |
2024/1/30 TIL (0) | 2024.01.30 |
2024/1/29 TIL (0) | 2024.01.29 |