본문 바로가기

스파르타코딩클럽64

Unity2D 플레이어 캐릭터 이동 구현하기 1. Input.GetAxisGetAxisGetAxisRawInput Manager2. Input.GetKey3. Input System 패키지와 event 활용Input System 패키지 설치Input Actions 오브젝트 생성Input Actions 편집스크립트 작성키 입력 받는 스크립트 작성참고) event를 사용했을 때의 이점Entity 이동 스크립트 작성컴포넌트 추가 플레이어 캐릭터 이동 구현에 대한 글이다. 다양한 방법으로 구현해볼 수 있겠지만총 세 가지 방법에 대해 다뤄보도록 하겠다. 1. Input.GetAxis 수평, 수직 키 값을 입력받아 추출해주는 함수이다. GetAxis public class TopDownCharacterController : MonoBehaviour { [Se.. 2023. 9. 5.
Unity MonoBehaviour (모노비헤이비어)와 스크립트 라이프 사이클 MonoBehaviour스크립트 라이프 사이클AwakeOnEnable & OnDisableStartUpdate, FixedUpdateLastUpdateOnDestorySerializeMonobehaviour 주의점 MonoBehaviour ✨A MonoBehaviour is a base class in C# which the unity engine provides and it allows you to attach your scripts to game objects so to create a new MonoBehaviour simply right-click, create C# script and name it what’s you like. 유니티 엔진에서 스크립트를 생성해보면, 그 스크립트가 무언가를 상속.. 2023. 9. 4.
C# 패턴 일치 (Pattern Matching) 패턴 일치?패턴 일치의 종류1. 상수 패턴 (Const Pattern)상수 패턴의 is2. 선언 패턴 (Declaration Pattern)선언 패턴의 is3. var 패턴 (var Pattern)switch를 이용한 패턴 일치C# 8.0 이후의 switch 패턴 일치 패턴 일치? 패턴 일치라는 것은 어떤 대상이 특정한 특징, 즉 패턴을 가지고 있는지 테스트하는 것이다. 패턴 일치를 찾아보고 느낀 것이 설명이 뭔가 모호하다 해야할까나?뭔가 설명해주는데 말이 어렵다.그 이유는 패턴 일치라는 것이 추상적 의미이기 때문이다. 최대한 직관적이게 설명하자면 객체 컬렉션으로부터 내 조건에 맞는 객체들만 추출해내기 위해 객체에다 그 조건을 검사하는 것이다. 보통은 == 연산자를 사용하여 조건을 체크할 것이다.우리가 .. 2023. 9. 1.
C# 중첩 클래스와 partial 클래스 중첩 클래스 (Nested Class)partial 클래스 팀과제를 하다가 느낀 것이 있었다. Item 클래스를 만들고, Item을 담는 List를 멤버로 하는 Inventory 클래스를 만들면, 파일이 분리되어 있어 보는 사람이 이해하기 어렵지 않을까? 라는 것이었다. Inventory 클래스 안에서 Item 클래스를 선언할 수 있나? 하고 찾아보니 되더라. 바로 중첩 클래스라는 건데, 클래스를 다양한 모양으로 만들 수 있게 해주는 것이다. 이 김에 클래스를 만들 때 하나의 클래스를 분할된 파일에 각각 만들 수 있도록 해주는 키워드인 partial에 대해서도 같이 알아보자. 중첩 클래스 (Nested Class) public class Container { class Nested { Nested() {.. 2023. 8. 31.
C# Enumerable 인터페이스 Enumerable vs IEnumerable?IEnumerable 기본 구조IEnumerable 상속 예시foreachyieldyield의 강점 C#을 만지다보면 종종 등장하던 IEnumerable.인덱서를 이용해 인덱스를 오버라이딩할 줄은 알았는데, foreach는 오버라이딩이 안되나? 라는 궁금증을 가지고 있었는데, 그 정답이 IEnumerable이었다. 이 김에 정리해보자. Enumerable vs IEnumerable? 들어가기 전에 확실히 할 부분이, System.Linq의 Enumerable 클래스에 대해 이야기 하는 것이 아니다. Enumerable 클래스는 열거형(Enumerable) 컬렉션에 사용가능한 메서드를 모아놓은 클래스라고 생각하면 된다. 즉, 기존의 열거형 컨테이너였던 Arra.. 2023. 8. 30.
C# Action으로 종속성 없애기..? C#을 배우는 과정에서 가장 곤란했던 건 과제나 실습을 할 때 코드 간 종속성이었다. 화면에 캐릭터의 정보를 표시한다고 해보자.해당 정보를 받기 위해서 Character 클래스를 정보 표시 기능을 하는 클래스에 어떻게 전달해줄 것인가? 가장 간단하게는 이렇게 할 수 있겠다. public static class ConsoleManager { public static Character? CurrentCharacter { get; set; } } 하지만 이게 난감한건 여러 가지가 있다.CurrentCharacter를 어디서 설정해줄 것인가?Character말고 다른 정보를 표시할 때에 이 클래스를 재사용할 수 있는가? 즉, 내 고민은 이것이다.“Character Class의 참조 없이 Character의 클래.. 2023. 8. 29.
C# StringBuilder 정리 기존 string의 문제점StringBuilderStringBuilder 생성자StringBuilder 메서드 기존 string의 문제점 사실 StringBuilder의 메서드들을 잘 보다보면, 기존 string에도 이미 있는 기능들이다. 그러면 StringBuilder를 왜 쓰느냐? 하면 C#의 string은 조작을 가하기에는 매우 부적절한 자료형이기 때문이다. 다음 코드를 보자. string s = "a" + "b"; s에 “ab”가 저장되는 아주 간단한 코드이다. 이 간단한 코드에 객체 선언이 몇 번이나 될까?string s를 선언할 때“a”를 위한 string“b”를 위한 string“a” + “b”의 결과를 저장하기 위한 string 마지막 string이 뭔가 이상하지 않은가?그렇다. strin.. 2023. 8. 28.
C# LINQ 간단 정리 LINQ를 이용한 쿼리 작성법주의점대표 메서드 정리1. Aggregate()2. All(), Any()3. Average()4. Concat()5. Contains()6. Count()7. Distinct()8. Except()9. OrderBy()10. 그 외 것들 C#을 공부하게 되면 한 번쯤은 써봤을 LINQ.각종 컨테이너들을 다룰 수 있는 강력한 기능을 탑재한 도구라서 그런 것 같다. 사실 LINQ는 쿼리 언어의 확장으로써 코드에서도 쿼리를 던질 수가 있다. 데이터베이스에서 데이터를 쿼리하는 방식처럼 C#의 컨테이너들을 다룰 수 있도록 한 기능이다. Language INtegrated Query이름도 사실 쿼리이다! 나는 컨테이너 객체에다만 사용해봤기 때문에 몰랐지만, 어지간한 데이터 소스에다가 .. 2023. 8. 25.
C# 값 vs 참조 형식 (Value vs Reference) 값 형식 (Value Type)깊은 복사 (Deep Copy)참조 형식 (Reference Type)얕은 복사 (Shallow Copy)값 형식 vs 참조 형식박싱과 언박싱 개발 공부를 함에 있어서 처음부터 매우 자주 나오는 단골 주제인 값 형식 vs 창조 형식. 예전 글에서도 몇 번 다뤘지만, 간단하게만 다루고 넘어갔기 때문에 이번 기회에 해당 주제에 관련된 것을 최대한 많이 정리 해보도록 하겠다. 값 형식 (Value Type) 값형은 변수에 값을 직접 저장한다. 가장 먼저 배우는 방식의 데이터 형식이기도 하다.int, float, double과 같은 기본 자료형부터 시작해서 구조체 struct도 이러한 값 형식의 저장 방식을 쓴다. 깊은 복사 (Deep Copy) 변수가 실제 데이터를 보유하게 되며.. 2023. 8. 24.
C# Sort() 메서드 다루기 Sort() 메서드의 비교자 매개변수대리자, 람다를 이용한 Sort() 기능 변경 연습 문제를 풀다가 상당히 특이한 문제를 발견했다. 문자열 내 마음대로 정렬하기https://school.programmers.co.kr/learn/courses/30/lessons/12915 문제 설명문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다. Sort 기준을 내 마음대로 바꾸라는 의도의 문제인데, 어떻게 바꾸는 지를 몰라 헤맸었다. Sort() 메서드의 비교자 매개변.. 2023. 8. 23.