2020/12 9

Unity,C#) 객체 지향 프로그래밍, 상속의 개념

위 사진을 잘보면 평소에 내가 쓰던 스크립트와는 다른 점이 하나있다. 바로 public class 스크립트명 : Monobehaviour를 쓰던 함수 클래스가 Bullet을 상속한다는 것이다. 상속이라는 개념은 2년전에 C++을 공부하면서 배웠던 개념인데 군대에 다녀오면서 다 까먹어 버렸다ㅋㅋ 군대에서도 공부를 안한건 아니지만 컴퓨터 사양문제, 환경문제로 핑계라고 댈 순 있지만 나름 열심히하긴 했지만, C++에 대한건 다 까먹어 버렸다. 그래서 요즘 골드메탈님 유튜브를 보면서 유니티를 공부하는데 C#을 기반으로 하는 유니티에서도 상속이라는 개념이 나오는걸 오늘에서야 알았다. C#을 공부한적이 없어서 골드메탈님이 알려주시는 함수들만 완벽하진 않더라도 알고있기에 C#에 대하여 자세히는 몰랐는데 객체 지향 프..

Unity) C#. Foreach문

나는 C#은 따로 공부한적이 없고 C++ , Windows API, C언어만 공부했기에 골드메탈님의 유니티 강의에서 foreach라는 구문을 처음봤다. 간단하게 설명해 주셨는데, foreach문은 프로그래머가 직접 처음과 끝을 입력해줘야하는 for문과 달리 알아서 배열의 처음부터 끝까지 반복해주는 구문이다. foreach문을 짤때는 foreach(자료형 변수명 in 배열) 이런식으로 짜줘야한다. 또 중요한건 배열만이 foreach문을 사용할 수 있다.

Unity) Ray 와 RayCast

Ray와 RayCast를 간단하게 정리 해놓으려 글을 쓴다. Ray란 지정한 위치에서부터 무한대로 발사되는 가상의 선이다. 게임속에선 보이지 않지만 Debug를 통하여 Ray를 확인할 수 있다. 보통 Ray를 사용한 후에 Ray에서 반환된 값을 찾기 위해서 RayCastHit 를 사용하는데 빨간 네모칸의 함수를 사용하면 Ray에 닿은 물체의 정보를 반환할 수 있다. 위의 예제에서 Physics.Raycast(ray, out rayHit, 100) 가 있는데 ray는 발사되는 ray를 넣어준거고, out rayHit가 있는데 여기서 out은 return의 기능을 수행하여 RaycastHit rayHit 로 선언된 rayHit에 ray와 닿은 값을 리턴해주는 것이다. 100은 ray의 최대길이이다.

Unity) Coroutine 함수란 ?

이번엔 코루틴 함수에 대해서 다뤄(?) 기록 해보려고 한다. 코루틴 함수라는 개념은 Unity 에서 엄청 중요한 개념인데 간단하게 말하자면 Invoke 함수의 기능을 한다고 볼수도 있다. 함수라는 개념은 보통 함수안에서 다른 함수를 호출해 그 함수를 실행후 다시 메인함수로 복귀하여 다시 메인 함수를 진행하는 식인데 코루틴 함수는 내가 지금까지 공부한 것과는 다르게 작동한다. 메인함수에서 호출시 다른 함수처럼 서브 함수라는 개념이 아니라 같이 작동한다. 메인 함수와 같이 알기 쉽게 예를 들자면 MMORPG 게임에서 내가 움직임과 동시에 다른 플레이어가 움직이는게 Coroutine 함수라고 볼수 있다. Routine 앞에 Co를 붙여 Coworker(동료) 와 같이 함께 한다는 의미로 보면된다. 위 함수를 ..

Unity) Particle System이란?

오늘은 유니티의 파티클 시스템을 다시 만져봤다. 예전에 한번 했었던 기억이 있지만 2,3달 동안 유니티를 안 건드렸기에 잠시 잊었지만 다시 공부하면서 차츰 기억이 나기 시작했다. 그래서 다신 잊지 않도록 파티클 시스템에 관련하여 글을 남겨놓으려고 한다. 파티클 시스템이란 개념을 잘 알지는 못하지만 내가 느끼는 개념은 그냥 GameObject들을 예쁘게 꾸며주고 화려하게 만들어주는 이펙트라고 본다. 위 사진은 Particle System을 적용했을 시에 보이는 파티클의 예제이다. 골드메탈님의 영상을 참고하여 파티클을 배웠고 그 예시로 적용했다. 보기엔 화려하지만 해야 할 일들은 매우 적고 간단하다. 최근 Low level 한 Windows API들을 공부하다가 이런 High Level 엔진을 공부하니까 느..

Unity) is Kinematic

Rigidbody 기능에 포함되어있는 Is Kinematic이라는 기능을 체크하기에 앞서 우선 보통적으로 이 기능을 사용하기 전에 Use Gravity기능을 체크해제 해주고 난 후에 사용하게 된다. Use Gravity기능을 체크해제 해주면 이 개체는 중력의 영향을 받지 않게 되고, 이 개체를 이동하거나 하려면 따로 코드를 작성해줘야 한다. Is Kinematic : 외부에서 가해지는 물리적 힘에 반응하지 않는 오브젝트라는 의미. 중력과 충돌에 반응하지 않도록 합니다. 오브젝트를 물리 거동하지 않은 스크립트에서 제어하는 데 주로 사용하면서 특정 상황에서 물리 거동으로 전환합니다. 예를 들어, 플레이어는 “걷기”로 일반적으로 이동하면서 폭발이나 충돌이 있을 때 공중에 내던질 수 있습니다. 물리 거동을 사용..

Unity) Continuous의 개념

유니티 Rigidbody에 속해있는 많은 기능들에 껴있는 Collision Detection 부분에는 많은 기능들이 포함되어있는데 Discrete Continuous 등이 있는데 보통은 Discrete가 사용되지만 플레이어 유닛이 예를 들어 벽들에 부딪히면 플레이어의 Trasform이동 처리는 Update()함수에서 처리되는 반면 벽들의 물리 계산은 FixedUpdate()에서 처리하기 때문에 Update와 FixedUpdate의 함수 계산방식은 프레임률이 다르기 때문에 플레이어가 벽을 뚫고 나가는걸 방지해주기 위해서 Collsion Detection에서 Continuous방식을 선택하면 메모리를 조금더 잡아먹는대신에 빠르고 정확한 계산을 해주기 때문에 그런 벽을 뚫고나가는 현상을 막아준다. 골드메탈님을..

DC(Device Context)의 개념

윈도우즈 API 공부를 시작하기에 앞서 중요한 개념인 DC의 개념을 조금 알아간 후에 시작하려고 한다. 윈도우즈는 세 가지 동적 연결 라이브러리(DLL)로 구성되있는데, 메모리를 관리하고 프로그램을 실행시키는 KERNEL, 유저 인터페이스와 윈도우를 관리하는 USER, 그리고 화면 처리와 그래픽을 담당하는 GDI가 그것들이다. 윈도우즈 API 함수의 대부분은 이 세가지 DLL들이 제공하고 있다. 추력을 하려면 우리는 GDI(Graphic Device Interface) 모듈에 특별히 관심을 기울여야 하는데 화면으로 출력되는 모든 글자와 글미은 GDI를 통해서 출력되기 때문이다. DC(Device Context)란 출력에 필요한 모든 정보를 가지는 데이터 구조체이며 GDI 모듈에 의해 관리된다. 문자열의 ..

프로그래밍/API 2020.12.21

Windows API 기본 서식

Windows API에 쓰이는 기본 서식입니다. #include //윈도우 헤더파일 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); // CALLBACK 매크로 HINSTANCE g_hinst; // 인스턴스 핸들 LPCTSTR lpszClass = TEXT("First File"); // 제목 표시줄에 표시되는 내용 int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow) // MAIN 함수 { HWND hWnd; // 윈도우 핸들 선언 MSG Message; // 메세지 구조체 변수 선언 WNDCLASS WndClass; // Wi..

프로그래밍/API 2020.12.20