20170420_편도
[닭다리완전크닭 도시락]
4500원짜리
GS25에서파는 도시락
4월 27일까지
1400원하는 코카콜라 증정
숟가락, 비닐장갑 포함
양도 많고 맛괜찮다.
굿굿
태어나서 먹어본 편도 중
세 손가락 안에 드는 도시락
'개인사 > 밥' 카테고리의 다른 글
20170505_족발 (0) | 2017.05.06 |
---|---|
20170420_마라샹궈 (0) | 2017.04.21 |
20170417_편도 (0) | 2017.04.17 |
20170414_라멘 (0) | 2017.04.16 |
20170410_이태리까스 (0) | 2017.04.10 |
실행(플레이) 창 크기, 창 시작점 구하기 - ffmpeg 로 원하는 영역만큼만 녹화해보자
UGameViewportClient* Viewport = GetWorld()->GetGameViewport();
FVector2D pos = Viewport->GetWindow()->GetPositionInScreen(); //시작점. 전체 화면일 경우 -8, -8로 나왔다.(Win10)
FVector2D WH = Viewport->GetWindow()->GetViewportSize(); //실행창 크기. 위에 타이틀 바가 있다면 그 크기도 포함
ffmpeg라는 동영상 프로그램을 사용하기 위해 위의 값들이 필요했다.
원하는 위치부터 원하는 사이즈 만큼
인자 값들을 넣기 위해 아래처럼 스트링을 만들어 영상 캡쳐가 성공했다.
int X = 0; //ffmpeg에 들어갈 인자 값들이 int가 아니면 작동 안한다.
int Y = 0;
int Width = 0;
int Height = 0;
//가로축 컨트롤 + width
if (pos.X < 0) //인자값 중 -offset_x 값이 -(음수)여도 동작 안한다.
{
X = 0;
Width = WH.X + pos.X * 2; //더해진 만큼 좌우 값을 빼준다. pos.X가 -이므로
}
else
{
X = pos.X;
Width = WH.X;
}
//세로축 컨트롤 + Height
if (pos.Y < 0) //인자값 중 -offset_y 값이 -(음수)여도 동작 안한다.
{
Y = 0;
Height = WH.Y + pos.Y * 2; //더해진 만큼 좌우 값을 빼준다. pos.Y가 -이므로
}
else
{
Y = pos.Y;
Height = WH.Y;
}
//아래 코드는 ffmpeg를 실행하기 위한 코드
FString FilePath = FPaths::ConvertRelativePathToFull(FPaths::Combine(*FPaths::GameDir(), TEXT("Plugins/ThirdParty/ffmpeg/"), TEXT("ffmpeg.exe")));
FString Args = FString::Printf(TEXT("-f gdigrab -offset_x %d -offset_y %d -video_size %dx%d -i desktop -r 24000/1001 -q 1 -vf crop %s"), X, Y, Width, Height, *Filename); //Filename은 인자로 받아온 저장될 파일 이름, 해상도는 -video_size 1024x768 이런 식으로 들어가야 함.
FString Cmd = FString::Printf(TEXT("%s %s %s"), *FilePath, *Args, *Filename);
TRACE("%s", *Cmd);
if (FPaths::FileExists(FilePath))
{
RecordHandle = FPlatformProcess::CreateProc(*FilePath, *Args, false, true, false, nullptr, 0, nullptr, nullptr);
}
'공부 > Unreal4' 카테고리의 다른 글
언리얼4 HTML5 Build 시도... (0) | 2017.04.27 |
---|---|
Character(Pawn) Move Control(Not Possess) - AddMovementInput 함수에 대해 (0) | 2017.04.20 |
키맵핑(바인딩) 삭제 - PlayerInput 비우기, InputComponent 비우기 (0) | 2017.04.19 |
언리얼4 c++프로그래밍 - 키맵핑(바인딩) 설정 (0) | 2017.04.17 |
언리얼 c++프로그래밍 - Controller의 Possess()함수에 대해 (0) | 2017.04.17 |
키맵핑(바인딩) 삭제 - PlayerInput 비우기, InputComponent 비우기
//PlayerInput 제거 - Controller = GetWorld()->GetFirstPlayerController();
UPlayerInput* PlayerInput = Controller->PlayerInput;
PlayerInput->AxisMappings.Empty(); //컨트롤러 인풋에 있는 Axis맵핑 비우기
PlayerInput->ActionMappings.Empty(); //콘트롤러 인풋에 있는 Action맵핑 비우기
// InputComponent 제거 - InputComponent = Character->GetInputComponent();
InputComponent->ClearBindingValues(); //소유한 AxisValue 초기화
InputComponent->ClearActionBindings(); //바인딩된 Action값 비우기
InputComponent->AxisBindings.Empty(); //바인딩된 Axis값 TArray 비우기
키맵핑을 하던 컨트롤러를 다른 곳으로 Pawn으로 옮겨 재사용하기 위해서는
그 플레이어 컨트롤에 들어있는 Input값을 초기화 해주어야 깔끔하다.
이동하기 전에 가지고 있던 InputComponent까지 지울 필요는 없었겠지만
깔끔하게 해보자고 해서 알아봤다.
혹시 키맵핑(바인딩) 설정 방법을 못보고 왔다면 아래 링크에 들어가 보자.
'공부 > Unreal4' 카테고리의 다른 글
Character(Pawn) Move Control(Not Possess) - AddMovementInput 함수에 대해 (0) | 2017.04.20 |
---|---|
실행(플레이) 창 크기, 창 시작점 구하기 - ffmpeg 로 원하는 영역만큼만 녹화해보자 (0) | 2017.04.19 |
언리얼4 c++프로그래밍 - 키맵핑(바인딩) 설정 (0) | 2017.04.17 |
언리얼 c++프로그래밍 - Controller의 Possess()함수에 대해 (0) | 2017.04.17 |
FindComponentByClass 의 위험성 (1) | 2017.04.14 |
오브젝트 빠른 비교 - System.Object.ReferenceEquals
오랜만에 유니티 글이네요.
오브젝트 비교하는 구문을 예로 들자면
if (player.gameobject == other.gameobject)
{
//코드...
}
위와 같이 == 로 비교 하는게 편했고 잘 사용해 왔다.
근데 이 간편한 구문보다 약 2배 빠른 비교 방법이 있다는걸 이제 알았다.
원래는 C#의 문법인데 아래 MSDN 참조해보자.
https://msdn.microsoft.com/ko-kr/library/system.object.referenceequals(v=vs.110).aspx
//이건 C# - if(Object.ReferenceEquals(player.gameobject, other.gameobject))
//유니티에선 아래
if(System.Object.ReferenceEquals(player.gameobject, other.gameobject))
{
//코드...
}
주의 할 점은 Reference에 대한 비교이다 보니
값이 같아도 Reference위치가 다르거나 Value Type이면 False가 떨어진다는 점이다.
null 비교에도 좋다.//System.Object.ReferenceEquals(gameobject, null)
'공부 > Unity' 카테고리의 다른 글
유나이트 2017 초급 트레이닝 후기 (0) | 2017.05.15 |
---|---|
유나이트'17 서울 개최(유니티 컨퍼런스) (0) | 2017.03.28 |
유니티에서 배경 이미지 무한 루프 시키기 (0) | 2016.10.07 |
[유니티]드로우콜(Draw call) 최적화 (0) | 2016.09.01 |
포트폴리오 잘하는 법 (0) | 2016.08.25 |
언리얼4 c++프로그래밍 - 키맵핑(바인딩) 설정
/*
UPlayerInput::AddEngineDefinedAxisMapping은 더이상 바꿀 수 없는 단일 엔진 키맵핑 설정이다.
캐릭터 하나나 컨트롤 값을 단일로만 사용할 경우 사용한다.
*/
//UPlayerInput::AddEngineDefinedAxisMapping(FInputAxisKeyMapping("NpcMoveForward", EKeys::W, 1.f));
//UPlayerInput::AddEngineDefinedAxisMapping(FInputAxisKeyMapping("NpcMoveForward", EKeys::S, -1.f));
//UPlayerInput::AddEngineDefinedAxisMapping(FInputAxisKeyMapping("NpcMoveRight", EKeys::D, 1.f));
//UPlayerInput::AddEngineDefinedAxisMapping(FInputAxisKeyMapping("NpcMoveRight", EKeys::A, -1.f));
//UPlayerInput::AddEngineDefinedAxisMapping(FInputAxisKeyMapping("NpcLookUp", EKeys::E, 1.f));
//UPlayerInput::AddEngineDefinedAxisMapping(FInputAxisKeyMapping("NpcLookUp", EKeys::Q, -1.f));
//UPlayerInput::AddEngineDefinedActionMapping(FInputActionKeyMapping("NpcRightMouse", EKeys::Zero));
//UPlayerInput::AddEngineDefinedActionMapping(FInputActionKeyMapping("NpcDelete", EKeys::Delete));
/*
컨트롤러에 있는 PlayerInput에 있는 키맵핑은 수정 가능한 설정이다.
캐릭마다 여러 컨트롤 값을 사용할 경우 유용하다.
*/
UPlayerInput* PlayerInput = GetWorld()->GetFirstPlayerController()->PlayerInput;
PlayerInput->AddAxisMapping(FInputAxisKeyMapping("NpcMoveForward", EKeys::W, 1.f));
PlayerInput->AddAxisMapping(FInputAxisKeyMapping("NpcMoveForward", EKeys::S, -1.f));
PlayerInput->AddAxisMapping(FInputAxisKeyMapping("NpcMoveRight", EKeys::D, 1.f));
PlayerInput->AddAxisMapping(FInputAxisKeyMapping("NpcMoveRight", EKeys::A, -1.f));
PlayerInput->AddAxisMapping(FInputAxisKeyMapping("NpcLookUp", EKeys::E, 1.f));
PlayerInput->AddAxisMapping(FInputAxisKeyMapping("NpcLookUp", EKeys::Q, -1.f));
PlayerInput->AddActionMapping(FInputActionKeyMapping("NpcUnpossess", EKeys::Zero));
PlayerInput->AddActionMapping(FInputActionKeyMapping("NpcDelete", EKeys::Delete));
//인풋컴포넌트에 함수 바인딩
InputComponent->BindAxis("NpcMoveForward", this, &ANpcCharacter::MoveForward);
InputComponent->BindAxis("NpcMoveRight", this, &ANpcCharacter::MoveRight);
InputComponent->BindAxis("NpcLookUp", this, &APawn::AddControllerPitchInput);
InputComponent->BindAction("NpcUnpossess", IE_Pressed, this, &ANpcCharacter::NpcUnpossess);
InputComponent->BindAction("NpcDelete", IE_Pressed, this, &ANpcCharacter::NpcDelete);
프로젝트 설정에서 하나하나 지정하는 것 말고
C++에서 처리 하는 방식을 찾아 정리하였다.
키맵핑을 삭제 하는 방법은 다음 글로 포스팅 하겠다.
'공부 > Unreal4' 카테고리의 다른 글
실행(플레이) 창 크기, 창 시작점 구하기 - ffmpeg 로 원하는 영역만큼만 녹화해보자 (0) | 2017.04.19 |
---|---|
키맵핑(바인딩) 삭제 - PlayerInput 비우기, InputComponent 비우기 (0) | 2017.04.19 |
언리얼 c++프로그래밍 - Controller의 Possess()함수에 대해 (0) | 2017.04.17 |
FindComponentByClass 의 위험성 (1) | 2017.04.14 |
언리얼 c++에서 스폰된 액터 클래스 명으로 찾기 (0) | 2017.04.05 |
언리얼 c++프로그래밍 - Controller의 Possess()함수에 대해
GetWorld()->GetFirstPlayerController()->Possess(this); //현재 pawn으로 빙의. this는 pawn을 상속받은 클래스
Possess는 소유하다, 지니다는 뜻으로 Controller를 지니게되는 Pawn을 정해준다.
APawn*을 인자로 받는다.(APawn을 상속받은 하위 클래스 포함)
인자로 들어온 pawn으로 Controller와 카메라 시점을 이동할 수 있다.
이것에 대해 아래와 같은 연관되게 되는 함수가 있다.
//현재 Pawn에 대해
//SetupPlayerInputComponent(GetWorld()->GetFirstPlayerController()->InputComponent); //키맵핑 하는 함수
//Possess()함수를 실행하면서 SetupPlayerInputComponent 함수도 같이 실행됨. 그래서 따로 함수 호출을 안해도 된다.
//과거 Pawn에 대해
//GetWorld()->GetFirstPlayerController()->UnPossess();
//이전의 pawn에 있던 Controller가 nullptr이 된다.
위의 함수들은 Possess할 때 자동으로 불리우며
과거와의 연을 끊고 새로운 연을 잇는다고 생각하면 편하다.
정리
Possess()함수를 호출하면
이전에 Controller가 빙의해있던 pawn은 UnPossess()가 실행 되면서 Controller가 nullptr이 된다.
현재 이동할 pawn이 Controller를 가지게 되고
자동으로 SetupPlayerInputComponent(UInputComponent*)함수를 호출한다.
SetupPlayerInputComponent()함수에서 키맵핑 하는 법은 다음 글에 이어서 하겠다.
'공부 > Unreal4' 카테고리의 다른 글
키맵핑(바인딩) 삭제 - PlayerInput 비우기, InputComponent 비우기 (0) | 2017.04.19 |
---|---|
언리얼4 c++프로그래밍 - 키맵핑(바인딩) 설정 (0) | 2017.04.17 |
FindComponentByClass 의 위험성 (1) | 2017.04.14 |
언리얼 c++에서 스폰된 액터 클래스 명으로 찾기 (0) | 2017.04.05 |
마이그레이션 중.. #include<Windows.h>문제와 wchar_t to std::string 한글 문제 (0) | 2017.04.05 |
20170417_편도
[고등어도시락]
비가 추적추적 내리는 홍대의 점심
오늘은 GS25 편도
새로나온듯이
New 라고 적혀있는
고등어 편도를 집음.
가격은 4천원
단점1. 도시락통이 은근히길어서
전자렌지 안에서
안돌아가고 걸림
단점2. 고등어 비린걸
짠맛으로 덮으려는듯한 맛
장점1. 영양많은 고등어가 있다. 끝
'개인사 > 밥' 카테고리의 다른 글
20170420_마라샹궈 (0) | 2017.04.21 |
---|---|
20170420_편도 (0) | 2017.04.20 |
20170414_라멘 (0) | 2017.04.16 |
20170410_이태리까스 (0) | 2017.04.10 |
20170408_돼지고기 (0) | 2017.04.08 |
20170414_라멘
[라멘]
신촌에 있는
돈코츠라멘 전문점
부탄츄
간장첨가냐 소금첨가냐
국물고르고
면고르고
기본 첨가물(마늘,숙주,파) 양 고르고
토핑 추가하는 방식
토핑은 많을수록 맛있다.
가격대는 7000원부터로
일본식 라멘집 치고
가격은 착한편
맛도 진하고 여친도 좋아함
세트로 시킨
교자는 육즙이 좀 시큼한 편
호불호 있을듯
면과 국물만으로는 으뜸 라멘집
웨이팅이 꽤 있지만
바깥에 앉아서
기다리는 자리가 잘되어있음
'개인사 > 밥' 카테고리의 다른 글
20170420_편도 (0) | 2017.04.20 |
---|---|
20170417_편도 (0) | 2017.04.17 |
20170410_이태리까스 (0) | 2017.04.10 |
20170408_돼지고기 (0) | 2017.04.08 |
20170407_치맥 (0) | 2017.04.07 |
FindComponentByClass 의 위험성
어느 액터(그외 하위 클래스)가 가지고 있는 Component를
검색하기 위해 아래와 같은 코드를 많이 사용한다.
UMyComponent* MyComp = MyActor->FindComponentByClass<UMyComponent>();
하지만 당연히 될 줄 알았던게 안됐을 때의 통수란...많은 시간 낭비를 하게 만든다.(하루를 날렸다.)
다른 컴포넌트에서 Owner가 되는 액터의 내부 컴포넌트를 찾기 위해 사용했었는데
설마 여기서 nullptr이 나올 줄은 몰랐다.
FindComponentByClass에 대해서 찾아보니 설명에 떡하니 이렇게 나와있었다.
Searches components array and returns first encountered component of the specified class.
first encountered...처음 발견된 것만...가져온다...
그래서 상속을 계속 받다보니 할아버지, 증조 할아버지격 부모 클래스에서
통일한 Component의 이름을 가진게 있었고
그 컴포넌트에는 비어있었기에 문제가 생겼었던 것이다.
이 문제를 해결하기 위해 find보다는 특정 변수에 값을 담아
Get함수로 가져오게 하였다.
엔진에서 제공해주는 함수라도 다시 알아보고 사용하자.
확실히 어떤 기능인지 알아보지 않고 사용하면
실수하는 건 자신이라는 걸 생각하자.
'공부 > Unreal4' 카테고리의 다른 글
언리얼4 c++프로그래밍 - 키맵핑(바인딩) 설정 (0) | 2017.04.17 |
---|---|
언리얼 c++프로그래밍 - Controller의 Possess()함수에 대해 (0) | 2017.04.17 |
언리얼 c++에서 스폰된 액터 클래스 명으로 찾기 (0) | 2017.04.05 |
마이그레이션 중.. #include<Windows.h>문제와 wchar_t to std::string 한글 문제 (0) | 2017.04.05 |
마이그레이션 중.. 싱글톤 설정 (0) | 2017.03.31 |
IT관련 무료 책 받기 - packtpub
packtpub 이라고 IT관련 외국 서적, 강의 판매 사이트가 있다.
구매하면 IT 서적 판매로 ebook이나, pdf로 다운 받을 수 있고
여러분야의 강좌들도 판매한다.(달러$ 결제)
이 사이트에서
4월 11일 부터 4월 30일 까지 하루에 한권씩 책을 무료 나눔한다.
https://www.packtpub.com/packt/offers/free-learning
가입은 이메일로 간편하게 할 수 있다.
오늘까지 3가지 책을 받아보니
연차는 좀 있는 책들 위주인 것 같다.
원하는 언어나 프로그램에 대한 책이 나올 때가지 기다려보는 것도 괜찮고,
지금은 필요없더라도 하루에 하나씩 받아 가는 것도 나쁘지 않다고 생각한다.
이 사이트에서는 이번달 뿐만이 아니라 이런 이벤트를 종종한다는 것 같다.
'공부 > 기타' 카테고리의 다른 글
2D스프라이트 얻을 수 있는 사이트 (0) | 2017.04.25 |
---|---|
캐릭터 제작론 (0) | 2017.04.24 |
교육부 블로그 SEF2017 소식 링크(교육 정보) (0) | 2017.04.09 |
assimp 라이브러리 만드는 방법 (0) | 2017.03.14 |
소스 정적분석툴 비교 참고사이트 (0) | 2017.02.12 |