3월, 2024의 게시물 표시

[C#] Struct? Class?

이미지
 Struct와 Class의 큰 차이점은 상속에 대한 처리라고 생각합니다 이러한 예시의 두 Struct, Class 만들었을 시  Struct는 Class와 달리 new 키워드 없이 바로 변수로 불러와 사용이 가능합니다. Struct를 사용 하는 여러 다른 값들을 생성할 수 있지만  Class는 new 키워드가 없다면 처음 값에 값이 덮혀져버려  결국 똑같은 값 밖에 만들어 낼 수 없습니다.  위의 예시처럼 Struct는 몇 개의 변수를 선언을 해줘도 다른 값이 나오지만 Class는 같은 값이 복사가 됩니다. Class는 다른 값을 나타내려면 새로운 변수에 다시 new 키워드를 통해 다시 할당을 해줘야 한다. 이로 인한 메모리의 할당 방식에도 많이 차이가 난다. Class는 힙(없어지지 않는 메모리 동작 속도 다운)에 메모리 할당을  Struct는 스텍(사용 후 종료되는 메모리 많이 쓰면 스텍오버플로우 발생) 메모리 할당

[C#] 접근 제한자란?

이미지
 접근제한자란? 접근 제한자는 외부로부터 타입(클래스, 구조체, 인터페이스, 델리게이트 등) 혹은 그 타입 멤버들(메서드, 속성, 이벤트, 필드 등)로의 접근을 제한할 때 사용하는 것  접근제한자 종류는?  접근 제한자 언제 쓰나? 1. Class의 필드는 기본적으로 private로 설정하여 외부로부터 접근을 제한하는 것이 일반적이다 2. Method는 외부에서 회출해야 하는 것만 public으로 사용 하고 전부 private로 설정한다 3. Method 외에도 어셈블리 내부에서만 사용 가능한 internal, 파생클래스에서 엑세스할 수 잇는 protected를 사용할 수 있다.

[C#] 'ref' 와 'out'의 차이

이미지
ref 함수는 밖에 있는 인자를 메서드로 넘겨주는 형식 입니다. out은 메서드 안에 있는 인자를 밖에 있는 변수에 넘겨주는 형식입니다. ref는 메서드 안에서 변수를 변경할때 좋고  out은 메서드 안에서 전달하는 변수를 초기화 할 때 많이 사용한다고 합니다. 

[Unity] 숙련주차 트러블 슈팅

이미지
  트러블 스테이지 난이도를 조절 할 때 스테이지 난이도별 몬스터의 체력이 증가하는 코드를 짰다. 하지만 SceneRouter를 통해 restart를 하게 되면 모든 변수 값이 초기화 되어 스테이지(Level) 변수가 계속 ‘1’로 고정 되는 트러블을 겪었다. 고민한 해결 방안 및 해결 시도 GameManager를 DontDestroyOnLoad(this.gameObject); 통해 꺼지지 않게 해준 후 변수를 설정해 주었다. 하지만 설계miss로 인해 이미 GameManager에는 많은 변수 값이 들어갔고 초기화가 필수였다. 2. 저장되어야만 하는 변수 값만 들고 갈 수 있는 새로운 cs파일 생성 DataManger.cs라는 파일을 생성, 변수 저장 후 파괴되지 않게 해주었다 (만든김에 bestScore 도 해준건 덤) 해결 후 아쉬움 이번 트러블을 만나면서 다시 느끼는 것이 처음 설계가 정말 중요하다는 것을 다시 느꼈다. 처음부터 이러한 기능을 만들 것이라는 생각을 했더라면 굳이 DataManger라는 파일을 만들지 않고 좀 더 깔끔한 코드로 GameManger를 이용해 만들 수 있었을 것 같다. 게임 시연영상