분류 전체보기
-
TIL_69(객체지향, SOLID법칙)TIL 2023. 11. 10. 21:04
23.11.10. 69차 오늘은 객체지향과 SOLID법칙에 대해 공부했다. 객체지향이란 객체를 중심으로 한다는 의미로, C#에서는 객체를 중심으로 하여 설계 개발 하는것을 의미한다. 객체 지향의 특징으로는 캡슐화, 추상화, 상속, 다형성이 있다. 캡슐화란 연관있는 변수와 메소드를 묶어주는 작업을 말하며, 클래스의 접근을 제한하는 것과 관계가 있다. 추상화란 객체에서 필요한 공통된 부분을 추출하는 것을 의미한다. 상속이란 부모 클래스로부터 공통된 변수와 함수, 인터페이스를 그대로 물려받는 것을 뜻한다. 다형성이란 같은 종류의 클래스가 하나의 메시지에 대해 서로 다른 행동을 하는 것을 말한다. 다형성은 오버라이딩, 오버로딩 형태로 제공된다. OOP란 Object-Oriented Programming의 약자로..
-
TIL_68(버블정렬과 선택정렬)TIL 2023. 11. 9. 21:11
23.11.09. 68차 오늘은 기술면접시간에 버블정렬과 선택정렬에 대해서 공부했다. 버블정렬은 배열에서 2개의 원소를 선택해 비교한다. 기본적으로 오름차순 정렬이라고 가정했을 때, 왼쪽의 원소가 오른쪽의 원소보다 크면 교환한다. 그 후 오른쪽으로 이동해가며 전부 정렬 될 때까지 반복한다. 최악의 경우 모든 원소를 다 교환해야하므로 버블 정렬의 시간복잡도는 O(n²)다. 버블정렬은 정렬을 가장 직관적으로 이해할수 있지만 효율이 떨어지기 때문에 그렇게 좋은 알고리즘은 아니다. -코드- class BubbleSort { static void Main(string[] args) { int[] arr = new int[]{ 1, 4, 3, 5, 9, 6, 2, 7, 8, 10 }; int temp; int co..
-
TIL_67(Call Back과 정렬 알고리즘)TIL 2023. 11. 8. 20:57
23.11.08. 67차 오늘은 기술면접 답변시간에 CallBack과 정렬 알고리즘에 대해 알아보는 시간을 가졌다. 우선 CallBack이란 대지라, 즉 delegate를 사용할 때 나오는 용어로 피호출자가 호출자를 다시 호출하는 것을 뜻한다. CallBack을 활용하면 매번 조건을 체크할 필요 없이 해당 조건이 되었을때 피호출자 쪽에서 호출자를 역으로 호출하여 실행시켜줄수 있게 된다. 그렇기에 정말 편리한 기능이다. 정렬 알고리즘은 원소들을 번호순이나 사전순서같이 일정하게 정해져있는 순서대로 열거하는 알고리즘이다. 예를 들어 배열안에 {6, 1 ,9, 15, 10}이 들어있다면 정렬 알고리즘을 사용한다면 {1, 6, 9, 10, 15} 혹은 역 순인 {15, 10, 9, 6, 1}로 정렬할수 있게된다...
-
TIL_66(Scene에 따른 Bgm변경)TIL 2023. 11. 7. 20:57
23.11.07. 66차 오늘은 프로젝트의 SoundManager를 만들었다. 우선 SoundManager는 씬이 바뀌어도 남아있어야하므로 싱글톤과 DontDestroyOnLoad를 통해 유지시켜주었다. 또한 SoundSource에 들어갈 파일들을 배열 형식으로 관리해서 해당 SoundClip들의 이름을 각 Scene들의 이름과 같게 설정만 해준다면, 해당 Scene이 시작될 때 같은 이름의 SoundClip이 작동하는 방식으로 구현하였다. StageSelect 에서 옵션을 통해 Bgm과 Sfx의 사운드 조절을 할 수 있도록 Slider를 사용해 구현 했으나, 해당 방식이 배열에는 영향을 주지 못해 완벽하게 구현하진 못했다. 우선 Stage3의 제작이 먼저라고 판단되어 SoundManager는 이정도 까..
-
TIL_65(Spawn을 통한 waypoint 중간 지점 난입)TIL 2023. 11. 6. 20:40
23.11.06. 65차 오늘은 저번주에 미처 마무리 짓지 못했던 StageSelect씬에서의 캐릭터의 Spawn의 문제를 해결했다. Stage에 진입 후 클리어하고 다시 StageSelect로 돌아올때 curStage값이 되돌아 가는 문제가 있었는데 그걸 GameManager로 해결하고 나니 waypoint의 범위가 아니라는 이유로 NullReference 오류가 떴다. 팀원들과 한참을 테스트 해가며 실험을 해보다가 하나의 waypoint를 구간별로 잘라서 하면 캐릭터가 어느 위치에서 스폰되는 경우에도 waypoint의 시작점에 있을 수 있으니 해결할 수 있을 것이라 생각했지만, 현재의 waypointIndex값을 지정해주는 방식으로도 충분히 중간지점부터 시작할 수 있다는걸 알게 되어 고쳤다. 그러나 ..
-
TIL_64(배열, list, ArrayList, Dictionary)TIL 2023. 11. 3. 20:58
23.11.03. 64차 오늘은 기술면접시간에 배열과 list, ArrayList, Dictionary의 차이점에 대해 공부했다. 배열은 동일한 데이터 타입의 원소들의 집합으로, 크기가 고정되어 있어 크기 변경을 위해선 새 배열을 생성해야한다는 특징이 있다. 배열의 장점으로는 메모리공간을 연속적으로 사용하기에 오버헤드가 적고, 인덱스를 통한 빠른 접근으로 O(1)의 시간 복잡도로 원소에 접근이 가능하다. 단점으로는 크기가 고정되어 있어 크기 변경을 위해선 새 배열을 생성하고 데이터를 복사해야한다는것과 데이터를 추가하거나 제거할 때 많은 데이터 이동이 필요해 불편하다는 것이다. list는 Generic 네임스페이스에 있는 제너릭 컬렉션으로, 크기가 동적으로 변경될 수 있고, 각 요소의 데이터 타입이 정해져..
-
TIL_63(wayPoint Reverse, Vector3.Lerp)TIL 2023. 11. 2. 20:49
23.11.02. 63차 오늘은 어제에 이어 Stage Select씬의 기능을 마무리 했다. 캐릭터가 waypoint를 따라 움직이는것에서 이제는 이전 스테이지를 갈때 되돌아가는것과, 캐릭터가 반대방향을 보며 가게 하는것, 캐릭터의 애니메이션을 추가했다. 캐릭터가 waypoint를 지날때 waypoint의 rotation y의 값에 따라 보는 방향이 다른데, 이를 이용해 캐릭터가 다음 스테이지로 갈때의 waypoint들의 rotation값과 캐릭터가 이전스테이지로 갈때의 waypoint들의 rotation값을 각각 다르게 주어 처리했다. else if (Input.GetKeyDown(KeyCode.W)) { isMove = true; isFront = true; if (curStage == 2) { _4..
-
TIL_62(waypoint2)TIL 2023. 11. 1. 21:00
23.11.01. 62차 오늘도 어제에 이어 waypoint를 사용하여 플레이어가 스테이지를 선택할 수 있는 맵을 구현했다. 팀원들과 튜터님의 도움을 받아 결국 완성했다. 아직 캐릭터의 회전은 구현되지 않았지만, 캐릭터의 움직임. 멈춤. UI의 표시등 완벽하게 구현해냈다. 어제는 waypoint를 구간별로 여러개 두어 waypoint를 갈아타며 진행하려고 했으나 waypoint가 바뀔때마다 알 수 없는 오류가 발생했고, 튜터님의 조언에 따라 하나의 waypoint 그룹을 만들어 해당 내에서 stage앞에 해당되는 point에 collider를 달아놓고, stage면 멈추게 하는 방식을 통해 구현해냈다. 중간중간 캐릭터의 rigidbody로 인한 물리 오류와, Invoke로 인한 오류가 발생했었지만 팀원들..