BlockGrid게임이 시작되면 블록을 생성하고 활성화된 볼록으로 score를 계산해서 화면에 표시하는 actor. headerScoreSizeBlockSpacingscore를 나타내거나 block의 간격을 설정할 수 있는 초기값.Size, BlockSpacing은 특히 에디터에서 편집할 수 있도록 UPROPERTY로 설정되었다. BeginPlay게임이 시작되고 actor가 활성화되면 가장 먼저 호출되는 초기화함수 AddScorescore수치를 변경시키도록 명령하는 함수 cpp블록 생성설정한 초기값을 바탕으로 블록을 생성하고 초기화한다. score 증가Score값을 1 증가시키고 text render component의 내용을 최신화한다. Block실제 마우스나 VR기기 같은 입력장치로 클릭할 수 있는 ..
개요언리얼 엔진으로 프로젝트를 생성하면 다양한 종류의 프로젝트를 쉽게 시작할 수 있도록 시작 프로젝트를 지원한다. 이번 포스팅에서는 퍼즐 시작프로젝트를 생성하고 내용을 보면서 공부해보자. 구성 요소프로젝트를 생성하면 화면에 기본적으로 놓여있는 actor들이 어떤 것들이 있는지 알아보자. Lighting과 RenderFX는 이 프로젝트와 직접적인 관계가 없는 actor들이므로 생략. Camera게임 화면을 촬영하는 카메라. 퍼즐 보드를 바라보고 있다.CubeMesh바닥을 표현하는 static mesh actorPuzzleBlockGrid기본 블럭들을 생성하고, 스코어를 나타내는 text render component가 포함된 actorTemplateLabelUI용 text render actorSkySph..
개요swift의 함수형 언어 특성인 closure를 공부했으니 이번에는 객체지향적 특성에 대해 공부해보자. swift는 객체지향 코딩을 위해서 여러가지 인터페이스를 제공한다. 사실 인터페이스라는 단어와 가장 어울리는 개념은 protocol이다.하지만 프로그래머로 하여금 코드의 각 조각들을 서로 연결시켜주는 역할을 한다는 뜻으로 사용했다. protocol가장 추상적인 인터페이스로 선언만 허용되는 인터페이스다.실제 사용하기 위해서는 상속을 받아서 구체화시켜서 사용한다. class아마 가장 많이 사용할 인터페이스일 것이다.함수(=method)와 변수(=property)를 모두 가질 수 있고, 인스턴스를 생성해서 프로그램 여기저기서 역할을 한다. struct데이터를 구조화시킬 때 많이 사용한다. class와 거..
개요클래스들을 작성할 때 맺을 수 있는 관계에 대해 알아보자.이는 기법은 아니고 관계에 대한 용어를 배우는 것으로 모른다고 하더라도 코드를 작성할 수는 있지만 용어를 많이 알아두면 다른 개발자들과 소통하기 좋다. IS A클래스를 상속할 때 맺어지는 관계이다. 일반적인 상속 구조에서 부모클래스와 자식클래스의 관계를 is a 관계라고 한다. is a 관계인 클래스는 자식 클래스가 가지고 있는 멤버를 무조건 부모 클래스가 가지고 있기 때문에 묵시적인 업캐스팅이 가능하다. class Parent { public: int a; }; class Child : public Parent { public: int b; }; void main() { Child* child = new Child(); Parent* pare..
2012017년 블로그를 결산하며 생각날 때마다 틈틈히 작성하기로 해놓고 귀찮아서 안쓰고 있던글들도 많은데 그래도 이렇게 모아보니 꽤 많이 쓰긴 했구나올해는 재대도 했으니 좀 더 알찬 내용으로 포스팅을 많이 해야겠다. 포스팅이 거의 코드 위주로 작성하다보니 워드 클라우드가 딱히 의미는 없을 것 같다. 지금까지는 지식 정리를 위해서 코드만 간략하게 적고 설명은 거의 없다시피 했는데 이제 설명도 좀 잘 적어야지 내가 써놓고도 나중에 다시 보면 무슨말을 하고싶은건지 모르겠는 포스팅이 몇개 보인다. 본격적으로 글을 쓰기 시작하니까 방문자도 늘고 열심히 해야겠다는 생각. 자격증 공부하면서 간단히 정리한 글이 이렇게 인기가 많아질줄은 몰랐다. 개인적인 프로젝트 관련 포스팅이나 마이너한 분야 포스팅을 많이 하긴 했지..
개요메모리 생성시 주의해야 할 점에 이어서 해제시 주의해야 할 점에 대해서도 알아보자. 생성시 주의해야 할 점해제는 실제로 해제를 할 때도 주의해야 하지만 해제를 하지 않고 함수를 종료하면 메모리 누수가 발생하므로 이 점도 주의해야 한다. 해제해제는 delete 연산자를 사용한다. delete는 해당 메모리를 해제하고 다음번 new 등에 사용할 수 있도록 해준다. 하지만 delete를 잘못 사용하면 버그가 발생할 수 있으므로 주의해야 한다. 컴파일러가 판단할 수 있는 경우 컴파일 에러가 발생하기 때문에 코드 작성 중에 확인할 수 있지만 런타임 에러를 발생시키는 경우는 치명적이다. 이미 해제된 메모리를 다시 해제할 경우void main() { ClassA *a = new ClassA(); delete a;..
개요C++은 최근 나오는 언어들과 다르게 메모리를 직접 관리하는 언어이다. 따라서 동적으로 메모리를 할당하거나 해제할 때 주의하지 않으면 메모리 누수가 발생하거나 프로그램이 동작 중에 죽어버리는 현상 등을 보게된다.메모리를 생성하거나 해제할 때 할 수 있는 실수 들을 알아보고 이 때 발생하는 오류 및 예외처리에 대해 알아보자. 생성메모리를 동적으로 할당하는 것으로 표적으로 new 연산자가 있다. malloc() calloc 등도 있지만 C++언어로 한정하여 설명하기 위해 new만 언급하도록 하겠다.기본적으로 new를 실패하는 경우는 어플리케이션이 더이상 메모리를 동적으로 할당할 수 없는 경우가 있다. 이 때 옛날 C++의 경우 NULL을 반환하도록 구현되어있어서 프로그래머가 NULL 체크를 통해 생성에 ..
개요리소스를 로딩한다거나 어떤 연산을 수행하기 위해 thread를 만들어서 동작시킬 수 있다. 하지만 thread가 언제 끝날지 보장할 수 없기 때문에 이것에 대해 방어적인 코딩이 필요하다. 예를 들어 리소스를 thread로 로딩하고 로딩이 완료될 때 마다 해당 인스턴스로 callback을 하여 리소스 로딩이 완료되었음을 알려주는 구현이라고 가정하자.이 인스턴스는 자신이 요청한 thread가 완료될 때 까지 삭제하면 안되지만 thread가 언제 끝날지 보장할 수 없기 때문에 thread가 언제 끝나더라도 동작하도록 구현할 필요가 있다. c++에 추가된 shared pointer를 사용하여 이를 구현해 보자. unsafe callback with raw pointer기존 pointer를 사용해서 구현할 경..
- Total
- Today
- Yesterday
- C++
- Cocos2d-x
- OS
- Git
- SHADER
- database
- mongoDB
- ue4
- JSP
- 드라마
- swift
- ios
- 알고리즘
- winsock
- game
- DesignPattern
- machine learing
- Java
- C/C++
- SwiftUI
- scala
- SOCKET
- rxswift
- 수학
- 운영체제
- Spring
- 자료구조
- C
- 국내여행
- 데이터베이스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |