일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 효과음
- InputManager
- 장애물달리기
- 비선형자료구조
- 메서드
- LINQ
- skybox
- 인터페이스
- unity
- inputsystem
- 람다식
- 스택
- FSM
- 유한상태머신
- c#
- BGM
- Generic
- UI
- ObjectPool
- delegate
- 프로그래머스
- 자료구조
- invokec#events
- 코루틴
- soundmanager
- script
- 배열
- 유니티
- 직렬화
- 스파르타내일배움캠프
- Today
- Total
목록c# (33)
Unity 개발일지
[확인문제] 1. 위와 같은 코드에서, 다음과 같이 다중 상속을 하는 것이 가능할까요? 가능/불가능하다면 이유는 무엇일까요?더보기C#에서는 다중 상속이 불가능하다. C#은 다중 상속을 지원하지 않으며, 그 이유는 다중 상속이 복잡성과 모호성을 초래할 수 있기 때문이다. 특히, 여러 기본 클래스가 동일한 메서드를 구현할 경우 어떤 메서드를 상속받아야 할지 모호해진다. 2. 만약 C#에서 다중 상속이 지원되었다면, 클래스 D는 어떤 문제에 직면하게 될까요?더보기클래스 D는 "다이아몬드 문제"에 직면하게 된다. 이는 B와 C가 동일한 부모 클래스 A를 상속받고, D가 B와 C를 상속받을 때 발생한다. B와 C가 A의 동일한 메서드를 오버라이드할 경우, D는 어떤 메서드를 상속받아야 할지 모호해진다. [설명 문..
[확인 문제]1. 다음 struct 코드와 class 코드의 결과를 예측해보고, 이유를 생각해봅시다.더보기[Struct 의 결과]Point 1 X: 10Point 2 X: 30 [이유]Point는 struct로 정의되어 있어 값 형식이다.point2는 point1의 값을 복사받아 독립적인 인스턴스가 된다.따라서 point2.X를 수정해도 point1.X는 영향을 받지 않는다. [Class 의 결과]Point 1 X: 30Point 2 X: 30 [이유] Point는 class로 정의되어있어 참조 형식이다.point2는 point1과 동일한 인스턴스를 참조하게 된다.따라서 point2.X를 수정하면 point1.X도 영향을 받아 동일한 값을 갖게 된다. [설명 문제]1. 참조 형식과 값 형식에 대해 설명..
[확인문제] 1. 위 코드의 출력 결과는 무엇인가요? 그 이유는 무엇인가요?더보기7과 35가 출력된다.첫번째 MathOperation은 Add메서드로 설정되어 3과 4를 더한 결과인 7을 출력두번째 MathOperation은 Multiply메서드로 설정되어 7과 5를 곱한 결과인 35를 출력 2. 위 코드의 Main함수를 아래처럼 바꿔도 같은 방식으로 동작할까요? 그 이유는 무엇인가요?더보기같은 방식으로 동작한다.Func는 C#에서 재공하는 내장 델리게이트 타입 중 하나로 매개변수를 받아 결과를 반환하는 메서드를 나타낸다.Func는 두개의 ins 매개변수를 받아 int 결과를 반환한다.둘 다 동일한 시그니처(매개변수와 반환타입)을 가지므로 동일하게 작동한다. 3. 델리게이트를 사용하여 메서드를 매개변수로..
객체지향에 대해 잘 알고있는지 간단한 문제를 풀어보자.[실전문제]1. 위 코드에서 삼각형 Triangle 클래스를 새로 작성한다고 했을 때, AreaCalculator의 코드를 수정하지 않고, AreaCalculator가 삼각형의 넓이를 계산하도록 만들 수 있을까요?더보기IShape 라는 인터페이스를 정의하여 각 도형 클래스가 해당 인터페이스를 상속하게 하였고, AreaCalculatorExtensions 확장 메서드를 사용하여 AreaCalculator를 수정하지 않고, 삼각형 넓이를 계산할 수 있도록 CalculateTriangleArea 메서드를 작성하였다. 확장 메서드는 특정 클래스의 인스턴스 메서드처럼 호출된다.확장 메서드는 첫 번째 매개변수로 지정된 클래스의 인스턴스를 메서드 호출 대상 객체로..
어느정도 C#과 유니티에 익숙해진 것 같다.배운 문법을 잘 사용하는 것도 좋지만, 정확하게 알고 사용해보자. [연습문제] 1. 위 예제 코드에서 Car는 무엇을 나타내나요? car1과 car2는 무엇을 나타내나요?더보기Car는 클래스를 나타내고, car1과 car2는 Car의 인스턴스, 즉 객체를 뜻한다. 2. 위 코드에서 Car 클래스에 정의된 메서드를 호출할 때 car1과 car2를 사용해야 하는 이유는 무엇일까요?더보기car1과 car2는 Car 클래스의 인스턴스로, 인스턴스 메서드는 객체를 통해서만 호출할 수 있기 때문이다. 3. 위 코드에 어떤 메서드를 추가하고 아래와 같이 사용했습니다. SomeMethod에는 static 한정자가 붙어있을까요? 그 이유는 무엇인가요?더보기SomeMethod에..
[Generic 이란?]타입 매개변수를 사용하여 클래스, 구조체, 인터페이스, 메서드 등을 정의할 수 있게 하는 기능으로, Generic을 사용하면 데이터 타입에 의존하지 않는 재사용가능한 코드를 작성할 수 있다. 이는 코드의 타입 안전성을 높이고, 성능을 향상시키며, 코드 중복을 줄이는 데 도움을 준다.쉽게 말하면, 제네릭은 다양한 데이터 타입에 하나의 함수나 클래스를 정의할 수 있도록 하는 프로그래밍의 기법이다. 'T'라는 타입 매개변수를 받아들이며, 이 타입은 클래스가 인스턴스화될 때 구체적으로 결정된다. 매개변수로 받은 타입 'T'를 이용하여 데이터를 출력한다.더보기[Generic을 어떻게 활용해야하나?]1. 여러 데이터 형식에 의해 동일한 로직을 적용해야할 때2. 제네릭 컬랙션을 활용할 때 게임..
Animator 창에서 Bool값으로 변수들을 선언 후 Create Sub-State Machine을 만들어주고 Ground라고 이름을 붙여준다. 그러면 Animator 상단에 Base Layer 와 Ground 로 레이어가 나뉘게 되는데 조건을 만족하면Base Layer에서 Ground로 이동한다는 뜻이다. Animation을 만들어줘야한다면 만들어서 넣어주고, 이미 만들어진 Animation이 있다면 드래그드랍으로 등록해주자. Tsansition을 등록해주고 각각의 bool값 설정화 Has ExitTime을 해제해주는 등의 작업을 한다. Player가 직접 움직이는게 아니라 붙어있는 Model이 움직여야하므로 Animator를 모델쪽으로 움직여준다.Animator위치를 바꿔줬으니Player 스크립트에..
[RayCast 란?]눈에 보이지 않는 광선(Ray)에 맞은 물체가 무엇인지 여부를 판단한 뒤 여러 가지 후처리를 하는 방식.Ray, RaycastHit, MaxDistance, LayerMask 등의 옵션을 가지고 있다. 카메라(출발점) 에서 Ray를 쏜 후 Collider에 부딪히면 RayCastHit으로 검출된 객체의 정보를 알 수 있다.Collider(충돌)을 검출해야하므로 Physics를 이용한다. [한번 쏴보자] Laycast를 관리해줄 Manager를 하나 만들어주었고,RaycastSceneManager 스크립트를 만들어 붙여주었다. 아래 스크립트설명에 작성하겠지만Ray는 Square에서 쏠 것이므로 SquareTransform은 Square로 해주었다. Square 2D오브젝트를 만들어..