TIL

2024/2/1 TIL

jhwoo1221 2024. 2. 1. 20:00

'오늘의 일에서 나는 어떤 것을 배웠는지' - 학습
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