acemiunrealci

Yeni üye
14 Haz 2018
105
7
0
(40) Kırşehir
Arkadaşlar bir oyun geliştirdim.Bu soru biraz saçma olabilir şimdiden kusura bakmayın ::) her şey tamam bilgi yarışması tarzında her soruda 15 saniye var ancak oyunu alta aldığımız zaman oyun duruyor geri girdğinde devam ediyor bunun olmaması için ne yapabilirim. Oyunu alta alıp sorunun cevabını bulabiliyor bunun için ne yapmam gerekir fikri olan var mı?
 
acemiunrealci' Alıntı:
Arkadaşlar bir oyun geliştirdim.Bu soru biraz saçma olabilir şimdiden kusura bakmayın ::) her şey tamam bilgi yarışması tarzında her soruda 15 saniye var ancak oyunu alta aldığımız zaman oyun duruyor geri girdğinde devam ediyor bunun olmaması için ne yapabilirim. Oyunu alta alıp sorunun cevabını bulabiliyor bunun için ne yapmam gerekir fikri olan var mı?

Merhaba acemiunrealci,

Bunu yapman için C++ koduyla yapman gerekiyor çünkü baktığım kadarıyla bunu ortaya çıkaran bir event blueprinti yok. 

ULocalPlayer sınıfının içerisindeki Viewport pointerini ve IsForegroundWindow üye fonksiyonunu çağırıp onları kontrol edip player controller üzerinden player data membere erişip cast işlemi yapıyoruz.

[code-sh=cpp]
// ULocalPlayer için header file ekle
#include "Runtime/Engine/Classes/Engine/LocalPlayer.h"

// Player controller sınıfı içerisindeki Player data member erişiyorum LocalPlayer Cast etmek için. Dikkat et multiplayer oyunlar için sıkıntı çıkarabilir..
ULocalPlayer* LocalPlayer = Cast<ULocalPlayer>(GetWorld()->GetFirstPlayerController()->Player);

// Bunu event tick içerisinde yerleştirebilrisin veya dispatch edebilirsin.. Bu arada FViewport::IsForegroundWindow üye fonksiyonunu çağırıp basit bir karşılaştırma yapıyorum.
if (!LocalPlayer->ViewportClient->Viewport || !LocalPlayer->ViewportClient->Viewport->IsForegroundWindow())
{        
    // oyuncu alt-tab yaptı veya window thread focusunu kaybetti.
    // buraya bir event dispatcher call edebilrisin.
}
[/code-sh]

Bu olay olduğunda blueprintlere aktarmak istiyorsan aktörün ticki üzerinden bir olay dağıtıcını dispatch etmen gerekiyor. Fonksiyon olarak bildirmek istiyorsan UFUNCTION(BlueprintAssignable) makro belirteçi ile.