분류 전체보기 55

[스터디] virtual / abstract / Interface 선언

OOP개념에서 상속을 이야기할 때 virtual이나 abstract 한정자가 사용이 된다. 두개를 사용하면서 헷갈리는 점을 정리해보겠다. 또한 Interface와 비슷한 기능을 제공하는데 같이 비교해보겠다. - virtual상속 관계에서 부모에 정의한 함수를 자식에서 다시 정의해서 사용하는 예제이다.부모 클래스의 함수에 virtual로 설정해두면, 자식 함수에서는 override 키워드를 사용해서 함수를 재정의해서 사용할 수 있다. virtual 키워드는 메서드, 속성, 인덱서 또는 이벤트 선언을 한정하는데 사용된다. 파생 클래스에서 필요에 따라서 재정의(override)할 수 있지만 필수적으로 재정의할 필요는 없다. virtual 한정자를 사용한 클래스는 완벽한 기능을 제공할 수 있다. - abstra..

[스터디] 컴포넌트 패턴

컴포넌트 기반이다 뭐다 자꾸 그러는데 컴포넌트 기반을 쓴다는 말이 이해가 안갈 때는 유니티라는 엔진이  컴포넌트 기반으로 만들어 졌다는 것을 생각해 보면 된다. 컴포넌트라는 패턴이 등장하게 된 배경은 프로그램의 구조가 굉장히 복잡하게 되어가니까 상속이 빈번하게 발생할 수 밖에 없고 오버로드/헤더에 대한 문제가 계속 발생하니까 이 문제를 조금 선회하거나 우회해서 해결할 수 있는 방식이 없을까 해서 나온 방식이 기본적으로 컴포넌트 패턴이다.  컴포넌트란 프로그램에 있어서 재사용이 가능한 독립된 모듈을 뜻한다. 컴포넌트 기반 프로그래밍을 하면 마치 레고블럭처럼 만들어진 컴포넌트를 조합하여 화면을 구성할 수 있다. 이 컴포넌트를 모으면은 오브젝트가 된다. 즉, 일종의 부속이다라고 얘기할 수 있다. 컴포넌트는 일..

[풋살] 풋살

패스 비하인드로 받기몸 페이크패스 받을 때 한발 앞으로 다른발로 뒤에서 받기 파라패스드래그백오버랩 모든 동작에서 한되면 뒤로 빼는건 기본 습관으로치다 비하인드 드리블도는 방법 연구 계속 연습 벽치면서 드리블 치다가 => 1몸 꺽고 팬텀 + 2발바닥 훼이크  동일 패턴을 보고 공 받을 때 어떻게든 발바닥으로 굴리면서 받는 거는 안되도 계속 연습 습관 들이기공 받을 때 공을 발바닥으로 잡고(밟고) 텀 주고 다시 굴리는 식으로 받아야 함-> 한번에 터치하자마자 굴리면서 잡는 것이 아니라 빽으로 슛하는거 연습 모렐리아 2 프로 as

풋살 2024.05.28

[스터디] Reflection(리플렉션)

reflection 같은 경우는 일상 코딩에서 자주 사용하는 기능은 아니지만, 개념적으로 굉장히 유용하다. reflection이 무엇이냐면 x-ray를 찍는 것이다라고 보면 된다.  class Monster{ public int hp; public int attack; private float speed; void Attack() {...};} 예를들어 몬스터라는 클래스를 만들었다. reflection이라는 기능을 사용하면 우리는 이 클래스가 갖고 있는 모든 정보들을 그냥 런타임에 다 뜯어보고 분석할 수가 있다. 이게 왜 도대체 그렇게 대단하고 유용한 기능인지 아직 와닿지 않을테니 그냥 몇개 사용 예를 보이겠다. Monster monster = new Monster();Typ..

[스터디] 내적 / 외적의 의미

내적(dot product)는 두 벡터 사이의 곱 연산이다.  A⋅B = |A| |B| cosθ    이를 다시 삼각형을 제대로 그려서 한 번 보겠다. 자, 삼각형을 그려서 보니 내적은 b와 b에 투영한 a의 길이의 곱이다.... 즉, 두 평행한 길이만 다른 것들끼리 곱을 하고 있다. 근데 이게 무엇? 무슨 의미?..인지 모르겟다.  a를 b에 투영했을 때 길이를 구하려는 것인가? 예를들어 가게에 어닝을 설치했는데, 설치할 때 어닝이 햇빛을 어디까지 막아주는 지 그 면적 혹은 길이를 알고 싶어서, 또는 그 비슷한 행위(투영 했을 때 뭘 알고 싶은)를 통해 알고 싶은 정보가 있어서 이 "내적"이라는 것을 사용하려는 것인가? 사실 고등학교 때 열심히 다 공부하고 알고 있지만 오랜만에 다시 공부하려니 다 까먹..

[스터디] 유니티 이벤트 함수 호출 순서

Awake - OnEnable - Start - FixedUpdate - OnTrigger - OnCollision - Update - LateUpdate    * 스크립트 비활성화 시 Awake함수는 호출 되는가?Awake()는 스크립트가 처음 로드될 때 정확히 한 번 호출된다. 스크립트의 활성/비활성 상태와 관계없이, 게임오브젝트가 씬에 로드될 때 Awake()가 실행된다. 하지만, 게임오브젝트 자체가 비활성화된 상태로 씬에 로드된 경우, Awake() 함수는 호출되지 않는다.  * 스크립트 비활성화 시 Start 함수는 호출 되나?Start()함수는 스크립트가 비활성화 상태일 경우, 호출되지 않는다. 스크립트가 나중에 활성화되면, 그 시점에서 Start()함수가 호출된다.  * 결론스크립트 컴포넌트..

[스터디] GC란?

유니티의 가비지 컬렉터(Garbage Collector, GC)는 유니티 엔진에서 사용되는 메모리 관리 시스템의 한 부분으로, 사용되지 않는 메모리(즉, 가비지)를 자동으로 찾아서 회수하는 역할을 수행한다. 이 시스템은 유니티가 사용하는 .Net 프레임 워크의 중요한 구성 요소이다. 가비지 컬렉터의 주 목적은 메모리 누수를 방지하고 애플리케이션의 메모리 효율성을 유지하는 것이다.  * 가비지 컬렉터의 작동 원리유니티에서의 가비지 컬렉션은 자동으로 진행된다. 즉, 프로그래머가 직접 메모리를 관리할 필요가 없다. 가비지 컬렉터는 다음과 같은 단계로 작동한다. 1. 마킹(Marking) : 가비지 컬렉터는 현재 활성화되어 사용 중인 객체를 확인하고 "마크"한다. 이 과정에서 프로그램에 의해 여전히 참조되고 있..

[스터디] 코루틴이란?

유니티 코루틴이란 비동기 실행, 게임의 메인 루프와 별개로 실행되며, 여러 프레임에 걸쳐 실행할 수 있도록 하는 강력한 기능이다. 코루틴을 사용하면 복잡하거나 시간이 걸리는 작업을 수행하면서도 게임의 프레임 레이트를 유지할 수 있다. 이는 게임의 응답성을 떨어뜨리지 않으면서 긴 작업을 처리할 수 있도록 해준다.   * 장점?코루틴은 유니티에서 비동기 작업을 처리하는데 매우 유용한 기능이며, 게임의 흐름을 방해하지 않으면서도 필요한 작업을 수행할 수 있게 해준다.  * 비동기 작업비동기 작업(Asynchronous Task)은 프로그래밍에서 두 가지 작업이 독립적으로 실행될 수 있게 하는 개념이다. 즉, 한 작업이 완료될 때까지 기다리지 않고 다른 작업을 계속 진행할 수 있게 한다. 비동기 작업은 주로 프..

[스터디] 인터페이스 vs 추상 클래스 차이

인터페이스와 추상 클래스는 객체 지향 프로그래밍의 중요한 구성 요소이다. 각각은 특정 상황에 맞게 사용될 때 가장 큰 효과를 발휘할 수 있으며, 코드의 유연성, 확장성 및 유지 관리 용이성을 향상시키는 데 도움이 된다. 1. 인터페이스(Interface)모든 메서스가 추상 메서드인 특수한 형태의 클래스로, 구체적인 구현을 포함하지 않고 메서드의 시그니처만을 정의한다. * 특징- 멤버 변수를 가질 수 없다(C# 8.0 부터는 default 구현을 가진 메소드와 속성도 허용).- 하나의 클래스가 여러 인터페이스를 구현할 수 있다. - 메서드의 선언(시그니처)만 제공하며, 각 메서드의 구현은 인터페이스를 구현하는 클래스에서 제공해야 한다. * 언제 사용하는지?- 여러 클래스 간에 공통된 동작을 정의하지만, 각..