leonscottkfm

Unreal MVP
31 May 2015
1,539
5
219
63
28
(34) İstanbul Avrupa
store.steampowered.com
Oyunumda can değerini kontrol edip buna göre işlem yapmaya çalışıyorum.
Şunu yapmak istiyorum. (can değişkenim) 50 -20 aralığındaysa yazı çıksın mesela.
"50 -20 aralığındaysa" bunu yapmak için hangi fonksiyonu kullanıyoruz. Hem değişkenimi bağlıycam hemde aralığını kontrol ettircem.
 
leonscottkfm' Alıntı:
Oyunumda can değerini kontrol edip buna göre işlem yapmaya çalışıyorum.
Şunu yapmak istiyorum. (can değişkenim) 50 -20 aralığındaysa yazı çıksın mesela.
"50 -20 aralığındaysa" bunu yapmak için hangi fonksiyonu kullanıyoruz. Hem değişkenimi bağlıycam hemde aralığını kontrol ettircem.

Int değeri float değere çevirip in range kullanabilirsin.

In range in çıkışını ise bir if(branch) e bağlarsın ve değerin o aralıkta olup olmadığını anlayabilirsin.
 
ClimbDown' Alıntı:
leonscottkfm' Alıntı:
Oyunumda can değerini kontrol edip buna göre işlem yapmaya çalışıyorum.
Şunu yapmak istiyorum. (can değişkenim) 50 -20 aralığındaysa yazı çıksın mesela.
"50 -20 aralığındaysa" bunu yapmak için hangi fonksiyonu kullanıyoruz. Hem değişkenimi bağlıycam hemde aralığını kontrol ettircem.

Int değeri float değere çevirip in range kullanabilirsin.

In range in çıkışını ise bir if(branch) e bağlarsın ve değerin o aralıkta olup olmadığını anlayabilirsin.

Sağol çok yardımın dokunuyor be :D Daha fazla rep verilmiyor bugün...
 
leonscottkfm' Alıntı:
ClimbDown' Alıntı:
Int değeri float değere çevirip in range kullanabilirsin.

In range in çıkışını ise bir if(branch) e bağlarsın ve değerin o aralıkta olup olmadığını anlayabilirsin.

Sağol çok yardımın dokunuyor be :D Daha fazla rep verilmiyor bugün...

Rep için yardım etmiyorum hocam,sorun varsa sor yani  :D
 
Ben de bu soruya şöyle bir soru eklemek istiyorum, eğer iznim varsa ?;
Event Tick bir eylemi her karede tekrarladığı için aslında sağlık gibi kısa sürede değişen verileri kontrol etmek için iyi bir Eylem (Event). Ancak bunu her karede yapmaktan başka bir çözümümüz var mı? Mesela ben şöyle bir sistem kurmak istiyorum;
Her Movement ve karakter eylemini ayrı ayrı Custom Event'lerde (veya Event Dispatcher'larda) toplayıp Input Event'in çıkışına Branch'li bir şekilde koşulları kontrol edip olayın ona göre gerçekleşip gerçekleşmemesini sağlamak istiyorum. Mesela "Sinematik moda girdi mi?" ve "Hala yaşıyor mu?" koşullarını tüm eylemlerden önce Branch ile denetleyip ona göre True ise eylemin gerçekleşmesini, False ise eylemin yapılmamasını istiyorum. Bu sistem içinde koşulları kullanırken Tick yerine başka bir Node kullanmam mümkün mü? Eğer değilse, bu yaptığım sistem içerisinde karakterin sağlık seviyesi bittiği anda "Hala yaşıyor mu?" koşulunu false yaptığım anda emir verdiğim tüm eylemler iptal mi olacak?
 
furkanxdgs4' Alıntı:
Ben de bu soruya şöyle bir soru eklemek istiyorum, eğer iznim varsa ?;
Event Tick bir eylemi her karede tekrarladığı için aslında sağlık gibi kısa sürede değişen verileri kontrol etmek için iyi bir Eylem (Event). Ancak bunu her karede yapmaktan başka bir çözümümüz var mı? Mesela ben şöyle bir sistem kurmak istiyorum;
Her Movement ve karakter eylemini ayrı ayrı Custom Event'lerde (veya Event Dispatcher'larda) toplayıp Input Event'in çıkışına Branch'li bir şekilde koşulları kontrol edip olayın ona göre gerçekleşip gerçekleşmemesini sağlamak istiyorum. Mesela "Sinematik moda girdi mi?" ve "Hala yaşıyor mu?" koşullarını tüm eylemlerden önce Branch ile denetleyip ona göre True ise eylemin gerçekleşmesini, False ise eylemin yapılmamasını istiyorum. Bu sistem içinde koşulları kullanırken Tick yerine başka bir Node kullanmam mümkün mü? Eğer değilse, bu yaptığım sistem içerisinde karakterin sağlık seviyesi bittiği anda "Hala yaşıyor mu?" koşulunu false yaptığım anda emir verdiğim tüm eylemler iptal mi olacak?

Custom event ile kendi update sistemini oluşturabilirsin, her 100 milisaniyede kontrol gibi.

Gta san andreas multiplayer eklentisinde Server modu  yazarken event Tick kullanmak sunucuda oyuncu sayısı arttıkça lag yaratıyordu o yüzden event Tick yerine her 100 ms de kontrol eden bir mekanizma kullanıyordum,kullanıyorduk.

Ama buna da her zaman ihtiyacın yok, 

Etki olmadan tepki olmayacağı için etki oluştuğunda karakterdeki tepki eventini 1 kereliğine çalıştırıp sorunu çözebilirsin.
 
ClimbDown' Alıntı:
furkanxdgs4' Alıntı:
Ben de bu soruya şöyle bir soru eklemek istiyorum, eğer iznim varsa ?;
Event Tick bir eylemi her karede tekrarladığı için aslında sağlık gibi kısa sürede değişen verileri kontrol etmek için iyi bir Eylem (Event). Ancak bunu her karede yapmaktan başka bir çözümümüz var mı? Mesela ben şöyle bir sistem kurmak istiyorum;
Her Movement ve karakter eylemini ayrı ayrı Custom Event'lerde (veya Event Dispatcher'larda) toplayıp Input Event'in çıkışına Branch'li bir şekilde koşulları kontrol edip olayın ona göre gerçekleşip gerçekleşmemesini sağlamak istiyorum. Mesela "Sinematik moda girdi mi?" ve "Hala yaşıyor mu?" koşullarını tüm eylemlerden önce Branch ile denetleyip ona göre True ise eylemin gerçekleşmesini, False ise eylemin yapılmamasını istiyorum. Bu sistem içinde koşulları kullanırken Tick yerine başka bir Node kullanmam mümkün mü? Eğer değilse, bu yaptığım sistem içerisinde karakterin sağlık seviyesi bittiği anda "Hala yaşıyor mu?" koşulunu false yaptığım anda emir verdiğim tüm eylemler iptal mi olacak?

Custom event ile kendi update sistemini oluşturabilirsin, her 100 milisaniyede kontrol gibi.

Gta san andreas multiplayer eklentisinde Server modu  yazarken event Tick kullanmak sunucuda oyuncu sayısı arttıkça lag yaratıyordu o yüzden event Tick yerine her 100 ms de kontrol eden bir mekanizma kullanıyordum,kullanıyorduk.

Ama buna da her zaman ihtiyacın yok, 

Etki olmadan tepki olmayacağı için etki oluştuğunda karakterdeki tepki eventini 1 kereliğine çalıştırıp sorunu çözebilirsin.
Sampmı oynuyordun ? Mta mı ?
 
ClimbDown' Alıntı:
Ama buna da her zaman ihtiyacın yok, 

Etki olmadan tepki olmayacağı için etki oluştuğunda karakterdeki tepki eventini 1 kereliğine çalıştırıp sorunu çözebilirsin.

Ancak onu da belli bir şekilde kontrol etmem gerekmiyor mu? Yoksa Event Dispatcher ile sadece sağlığı azaltıcak Blueprint'ler içinden Event Dispatcher ile etki ettiğini bilgi olarak gönderip etkiye göre eyleme geçmesini mi sağlamalıyım? 
Aslında biraz konudan çıkmış gibi oldum, benim amacım mesela tuşa basıldığı sürece yani Input Event devam ederken zarar görüp canım biterse karakterin direk olarak yığılmasını istiyorum (Örnek olarak). Burada Event Tick kullanırsam sorun çözülür, ama orada da her karede tekrar tekrar bilgilerin kontrol edilmesi gerekiyor ve bu da gereksiz yere donanımı yormak demek. Onun yerine sağlık Float'ının 0 olunca direk ölmenin gerçekleşmesi mümkün mü? Yani tekrar tekrar kontrol etmesini sağlamadan?
 
furkanxdgs4' Alıntı:
ClimbDown' Alıntı:
Ama buna da her zaman ihtiyacın yok, 

Etki olmadan tepki olmayacağı için etki oluştuğunda karakterdeki tepki eventini 1 kereliğine çalıştırıp sorunu çözebilirsin.

Ancak onu da belli bir şekilde kontrol etmem gerekmiyor mu? Yoksa Event Dispatcher ile sadece sağlığı azaltıcak Blueprint'ler içinden Event Dispatcher ile etki ettiğini bilgi olarak gönderip etkiye göre eyleme geçmesini mi sağlamalıyım? 
Aslında biraz konudan çıkmış gibi oldum, benim amacım mesela tuşa basıldığı sürece yani Input Event devam ederken zarar görüp canım biterse karakterin direk olarak yığılmasını istiyorum (Örnek olarak). Burada Event Tick kullanırsam sorun çözülür, ama orada da her karede tekrar tekrar bilgilerin kontrol edilmesi gerekiyor ve bu da gereksiz yere donanımı yormak demek. Onun yerine sağlık Float'ının 0 olunca direk ölmenin gerçekleşmesi mümkün mü? Yani tekrar tekrar kontrol etmesini sağlamadan?

Bak canım benimm onu ben yaptım :D Acayip gıcık bir şey bu şimdi oyuncunun paneline gidip can diye değişken oluşturuyorsun 100 veriyorsun mesela daha sonra diyorsun ki bu can 0 a eşitse fiziği simule et ve tekrar bir boolean değişkeni oluşturup öldü ölmedi şeklinde ayarlıyorsun simule olmuşsa ölmüş demektir diyorsun yada 0 a eşitse ölmüş ayarla ölmüşmü öyleyse simule et diyorsun. Fakat sorun şu buradada bir kontrol işlemi gerek bunu custom event yapıp çağırmak falan lazım yada ne biliyim set timer by event var çağırıldığı anda kontrol işlemi yapabiliyor.... bir obje yaratıp objeye de oyuncuyu cast edip variablesini çekip -100 yaparsan öldü sayacaktır eventi çağırırsın büyük ihtimalle eventtede kontrol işlemi yapar. Bence event tick bu kadar yormaz sistemi sanmıyorum ben 0.0001 tick ile obje spawn ediyordum 1000 tane hiçbir şey olmuyordu :D
 
leonscottkfm' Alıntı:
furkanxdgs4' Alıntı:
Ancak onu da belli bir şekilde kontrol etmem gerekmiyor mu? Yoksa Event Dispatcher ile sadece sağlığı azaltıcak Blueprint'ler içinden Event Dispatcher ile etki ettiğini bilgi olarak gönderip etkiye göre eyleme geçmesini mi sağlamalıyım? 
Aslında biraz konudan çıkmış gibi oldum, benim amacım mesela tuşa basıldığı sürece yani Input Event devam ederken zarar görüp canım biterse karakterin direk olarak yığılmasını istiyorum (Örnek olarak). Burada Event Tick kullanırsam sorun çözülür, ama orada da her karede tekrar tekrar bilgilerin kontrol edilmesi gerekiyor ve bu da gereksiz yere donanımı yormak demek. Onun yerine sağlık Float'ının 0 olunca direk ölmenin gerçekleşmesi mümkün mü? Yani tekrar tekrar kontrol etmesini sağlamadan?

Bak canım benimm onu ben yaptım :D Acayip gıcık bir şey bu şimdi oyuncunun paneline gidip can diye değişken oluşturuyorsun 100 veriyorsun mesela daha sonra diyorsun ki bu can 0 a eşitse fiziği simule et ve tekrar bir boolean değişkeni oluşturup öldü ölmedi şeklinde ayarlıyorsun simule olmuşsa ölmüş demektir diyorsun yada 0 a eşitse ölmüş ayarla ölmüşmü öyleyse simule et diyorsun. Fakat sorun şu buradada bir kontrol işlemi gerek bunu custom event yapıp çağırmak falan lazım yada ne biliyim set timer by event var çağırıldığı anda kontrol işlemi yapabiliyor.... bir obje yaratıp objeye de oyuncuyu cast edip variablesini çekip -100 yaparsan öldü sayacaktır eventi çağırırsın büyük ihtimalle eventtede kontrol işlemi yapar. Bence event tick bu kadar yormaz sistemi sanmıyorum ben 0.0001 tick ile obje spawn ediyordum 1000 tane hiçbir şey olmuyordu :D

Tabii ki tek düşündüğüm şey performans değil, sadece küçük bir kontrol işleminin performansa etkisi olmaz bile denebilir. Ama farklı yöntemler öğrenmeye çalışıyorum, sonuçta her şeyi Event Tick'e bağlamamak gerek. Orada can sistemini örnek olsun diye söyledim yoksa daha karmaşık örnekleri de var, sadece anlaşılması basit olsun istedim. Asıl sorum kabaca özetlersek;
Bir değişkeni Branch'ler vs yardımıyla durmadan öğrenip o bilgiyi kontrol etmektense, değişken 0 olduğunda kendince uyarı vericek şekilde bir sistem kurabilir miyiz onu öğrenmek istiyorum. Blueprint'lerin detaylı seçenekleri arasında çok kısa ve etkili çözümler bulunabiliyor bazen, o yüzden belki bir kısayol vardır diye sordum. 
Not: Bu soruyu sorma nedenim Event Tick'i Branch'e bağlayıp "Eşitse","Eşit değilse" sistemini kurmaya üşendiğimden değil, bir kısayol öğrenmek için soruyorum.
Not 2: Aklıma şöyle bir sistem geldi. Karakterin içinde Event Dispatcher kurup gerçekleştiğinde can seviyesini ve "Canı bitti mi?" Boolean'ını Array'lere kaydedip tüm zarar veren eylemlerin sonuna bu Event Dispatcher ekleyerek Array içinde bu bilgiyi edinmesini sağlayabilirim. Bundan sonra da tüm eylemlerin başlangıcına "Can bitti mi?" koşulunu Array'den çekerek canın bitip bitmediğini öğrenebilirim. Bu sayede de tekrar tekrar kontrol etmektense zaten zarar verildiğinde sağlık bilgisini kaydedecek ve bir bilgiyi tek seferde çekebileceğiz.
 
Mümkün oldukça Event Tick kullanmaktan kaçının bunun yerine "Custom Event" oluşturup birbirini tetikleyen bazı olaylar çerçevesinde mantıksa olarak yorumlayın. Event dispatcher genelde farklı blueprintler içerisinde ya da level blueprinti içerisinde yorumlanırsa daha iyi bir iletişim seçeneği sağlar. Event tick 2 farklı şekilde kullanılırsa daha verimli bir performans ortaya koyulur.

1-> Değişkenin değerini oyun zamanı içerisinde görme: Print string gibi düğümleri bağlarsanız daha kolay bir şekilde değişkenin nasıl değiştiğini görebilirsin.

2-> Delta Seconds float değerinle matematiksel işlem kullanarak değişen çerçevenin zamanını almak: Bununla ilgili oyun zamanı içerisindeki belirli zamanı alabilirsiniz. Bu zaman aralığında belirli işlemler uygulayaiblirsiniz.
 
leonscottkfm' Alıntı:
Oyunumda can değerini kontrol edip buna göre işlem yapmaya çalışıyorum.
Şunu yapmak istiyorum. (can değişkenim) 50 -20 aralığındaysa yazı çıksın mesela.
"50 -20 aralığındaysa" bunu yapmak için hangi fonksiyonu kullanıyoruz. Hem değişkenimi bağlıycam hemde aralığını kontrol ettircem.

ClimbDown' Alıntı:
Int değeri float değere çevirip in range kullanabilirsin.
In range in çıkışını ise bir if(branch) e bağlarsın ve değerin o aralıkta olup olmadığını anlayabilirsin.

Bu kadar ayrıntıya gerek yok. Küçük ve büyük ifadelerini Float üzerinde de kullanabilirsiniz. Yani: > 20 && < 50


leonscottkfm' Alıntı:
furkanxdgs4' Alıntı:
Ancak onu da belli bir şekilde kontrol etmem gerekmiyor mu? Yoksa Event Dispatcher ile sadece sağlığı azaltıcak Blueprint'ler içinden Event Dispatcher ile etki ettiğini bilgi olarak gönderip etkiye göre eyleme geçmesini mi sağlamalıyım? 
Aslında biraz konudan çıkmış gibi oldum, benim amacım mesela tuşa basıldığı sürece yani Input Event devam ederken zarar görüp canım biterse karakterin direk olarak yığılmasını istiyorum (Örnek olarak). Burada Event Tick kullanırsam sorun çözülür, ama orada da her karede tekrar tekrar bilgilerin kontrol edilmesi gerekiyor ve bu da gereksiz yere donanımı yormak demek. Onun yerine sağlık Float'ının 0 olunca direk ölmenin gerçekleşmesi mümkün mü? Yani tekrar tekrar kontrol etmesini sağlamadan?
Bak canım benimm onu ben yaptım :D Acayip gıcık bir şey bu şimdi oyuncunun paneline gidip can diye değişken oluşturuyorsun 100 veriyorsun mesela daha sonra diyorsun ki bu can 0 a eşitse fiziği simule et ve tekrar bir boolean değişkeni oluşturup öldü ölmedi şeklinde ayarlıyorsun simule olmuşsa ölmüş demektir diyorsun yada 0 a eşitse ölmüş ayarla ölmüşmü öyleyse simule et diyorsun. Fakat sorun şu buradada bir kontrol işlemi gerek bunu custom event yapıp çağırmak falan lazım yada ne biliyim set timer by event var çağırıldığı anda kontrol işlemi yapabiliyor.... bir obje yaratıp objeye de oyuncuyu cast edip variablesini çekip -100 yaparsan öldü sayacaktır eventi çağırırsın büyük ihtimalle eventtede kontrol işlemi yapar. Bence event tick bu kadar yormaz sistemi sanmıyorum ben 0.0001 tick ile obje spawn ediyordum 1000 tane hiçbir şey olmuyordu :D

furkanxdgs4' Alıntı:
Tabii ki tek düşündüğüm şey performans değil, sadece küçük bir kontrol işleminin performansa etkisi olmaz bile denebilir. Ama farklı yöntemler öğrenmeye çalışıyorum, sonuçta her şeyi Event Tick'e bağlamamak gerek. Orada can sistemini örnek olsun diye söyledim yoksa daha karmaşık örnekleri de var, sadece anlaşılması basit olsun istedim. Asıl sorum kabaca özetlersek;
Bir değişkeni Branch'ler vs yardımıyla durmadan öğrenip o bilgiyi kontrol etmektense, değişken 0 olduğunda kendince uyarı vericek şekilde bir sistem kurabilir miyiz onu öğrenmek istiyorum. Blueprint'lerin detaylı seçenekleri arasında çok kısa ve etkili çözümler bulunabiliyor bazen, o yüzden belki bir kısayol vardır diye sordum. 
Not: Bu soruyu sorma nedenim Event Tick'i Branch'e bağlayıp "Eşitse","Eşit değilse" sistemini kurmaya üşendiğimden değil, bir kısayol öğrenmek için soruyorum.
Not 2: Aklıma şöyle bir sistem geldi. Karakterin içinde Event Dispatcher kurup gerçekleştiğinde can seviyesini ve "Canı bitti mi?" Boolean'ını Array'lere kaydedip tüm zarar veren eylemlerin sonuna bu Event Dispatcher ekleyerek Array içinde bu bilgiyi edinmesini sağlayabilirim. Bundan sonra da tüm eylemlerin başlangıcına "Can bitti mi?" koşulunu Array'den çekerek canın bitip bitmediğini öğrenebilirim. Bu sayede de tekrar tekrar kontrol etmektense zaten zarar verildiğinde sağlık bilgisini kaydedecek ve bir bilgiyi tek seferde çekebileceğiz.

Bu tür durumlarda, nesne yönelimli programlamada, nesnenin erişim denetleyicilerinden(public, protected, private) ve değişkenleri kontrol etmek için ilgili GET ve SET metotlarından faydalanılır.

PHP:
class MyActor
{
public:
  float A;
  MyActor() : A(1), B(2), C(3) {} // kurucu(constructor) metot.
protected:
  float B;
private:
  float C;
}
MyActor* myActor = new MyActor();
myActor örneği üzerindeki C değişkenine sadece MyActor sınıfı üzerinden, B değişkenine ise MyActor ve ondan kalıtım almış sınıflar üzerinden A değişkenine ise heryerden erişilebilir.
PHP:
myActor->A = 10; // ok
myActor->B = 20; // hata, B değişkeni korumalı
myActor->C = 30; // hata, C değişkeni gizli

class MyDerivedActor : public MyActor
{
public:
  void setB(float b) { B = b; }  // ok
  void setC(float c) { C = C; }  // hata, c değişkeni gizli
}

Konuyu C++ üzerinden özetlersek;
PHP:
class Character
{

public:

  // Set
  void SetHealth(float health)
  {
    float oldHealth = Health;
    Health = health;
    if (oldHealth != Health)
      OnHealthChanged(oldHealth, Health);
  }

  void OnHealthChanged(float OldHealth, float NewHealth)
  {
    std::cout << "Health is changed from " << OldHealth << " to " << NewHealth;
  }

  // Get
  float GetHealth() { return Health; }

protected: // yada private:

  float Health;
}

Görüldüğü üzere Health değişkeni yalnızca SetHealth metodu ile kontrol edilirse, değişiklikler tespit edilir ve değişiklik olduğunda ilgili işlemler yapılabilir.

Blueprint üzerinde ise bu işlem şöyle gerçekleştirilebilir. ClimbDown ve Khubur'un bahsetmiş olduğu gibi bir event(Event Any Damage) zaten var. Eğer Health değişkeni aynı BP içinde sadece bu eventte kontrol edilir, değiştirilirse ve Health değişkeninin Editable özelliği False yapılırsa(dışarıdan değiştirilmezse); değişmesi durumunda yapılacaklar da bu eventte yapılabilir. Böylece başka herhangi bir yerde asla değiştirilmeyeceği garanti altına alınır ve gerekenler yapılır.
jz8suo.png
 
cahitburak' Alıntı:
leonscottkfm' Alıntı:
Oyunumda can değerini kontrol edip buna göre işlem yapmaya çalışıyorum.
Şunu yapmak istiyorum. (can değişkenim) 50 -20 aralığındaysa yazı çıksın mesela.
"50 -20 aralığındaysa" bunu yapmak için hangi fonksiyonu kullanıyoruz. Hem değişkenimi bağlıycam hemde aralığını kontrol ettircem.

ClimbDown' Alıntı:
Int değeri float değere çevirip in range kullanabilirsin.
In range in çıkışını ise bir if(branch) e bağlarsın ve değerin o aralıkta olup olmadığını anlayabilirsin.

Bu kadar ayrıntıya gerek yok. Küçük ve büyük ifadelerini Float üzerinde de kullanabilirsiniz. Yani: > 20 && < 50


leonscottkfm' Alıntı:
Bak canım benimm onu ben yaptım :D Acayip gıcık bir şey bu şimdi oyuncunun paneline gidip can diye değişken oluşturuyorsun 100 veriyorsun mesela daha sonra diyorsun ki bu can 0 a eşitse fiziği simule et ve tekrar bir boolean değişkeni oluşturup öldü ölmedi şeklinde ayarlıyorsun simule olmuşsa ölmüş demektir diyorsun yada 0 a eşitse ölmüş ayarla ölmüşmü öyleyse simule et diyorsun. Fakat sorun şu buradada bir kontrol işlemi gerek bunu custom event yapıp çağırmak falan lazım yada ne biliyim set timer by event var çağırıldığı anda kontrol işlemi yapabiliyor.... bir obje yaratıp objeye de oyuncuyu cast edip variablesini çekip -100 yaparsan öldü sayacaktır eventi çağırırsın büyük ihtimalle eventtede kontrol işlemi yapar. Bence event tick bu kadar yormaz sistemi sanmıyorum ben 0.0001 tick ile obje spawn ediyordum 1000 tane hiçbir şey olmuyordu :D

furkanxdgs4' Alıntı:
Tabii ki tek düşündüğüm şey performans değil, sadece küçük bir kontrol işleminin performansa etkisi olmaz bile denebilir. Ama farklı yöntemler öğrenmeye çalışıyorum, sonuçta her şeyi Event Tick'e bağlamamak gerek. Orada can sistemini örnek olsun diye söyledim yoksa daha karmaşık örnekleri de var, sadece anlaşılması basit olsun istedim. Asıl sorum kabaca özetlersek;
Bir değişkeni Branch'ler vs yardımıyla durmadan öğrenip o bilgiyi kontrol etmektense, değişken 0 olduğunda kendince uyarı vericek şekilde bir sistem kurabilir miyiz onu öğrenmek istiyorum. Blueprint'lerin detaylı seçenekleri arasında çok kısa ve etkili çözümler bulunabiliyor bazen, o yüzden belki bir kısayol vardır diye sordum. 
Not: Bu soruyu sorma nedenim Event Tick'i Branch'e bağlayıp "Eşitse","Eşit değilse" sistemini kurmaya üşendiğimden değil, bir kısayol öğrenmek için soruyorum.
Not 2: Aklıma şöyle bir sistem geldi. Karakterin içinde Event Dispatcher kurup gerçekleştiğinde can seviyesini ve "Canı bitti mi?" Boolean'ını Array'lere kaydedip tüm zarar veren eylemlerin sonuna bu Event Dispatcher ekleyerek Array içinde bu bilgiyi edinmesini sağlayabilirim. Bundan sonra da tüm eylemlerin başlangıcına "Can bitti mi?" koşulunu Array'den çekerek canın bitip bitmediğini öğrenebilirim. Bu sayede de tekrar tekrar kontrol etmektense zaten zarar verildiğinde sağlık bilgisini kaydedecek ve bir bilgiyi tek seferde çekebileceğiz.

Bu tür durumlarda, nesne yönelimli programlamada, nesnenin erişim denetleyicilerinden(public, protected, private) ve değişkenleri kontrol etmek için ilgili GET ve SET metotlarından faydalanılır.

PHP:
class MyActor
{
public:
  float A;
  MyActor() : A(1), B(2), C(3) {} // kurucu(constructor) metot.
protected:
  float B;
private:
  float C;
}
MyActor* myActor = new MyActor();
myActor örneği üzerindeki C değişkenine sadece MyActor sınıfı üzerinden, B değişkenine ise MyActor ve ondan kalıtım almış sınıflar üzerinden A değişkenine ise heryerden erişilebilir.
PHP:
myActor->A = 10; // ok
myActor->B = 20; // hata, B değişkeni korumalı
myActor->C = 30; // hata, C değişkeni gizli

class MyDerivedActor : public MyActor
{
public:
  void setB(float b) { B = b; }  // ok
  void setC(float c) { C = C; }  // hata, c değişkeni gizli
}

Konuyu C++ üzerinden özetlersek;
PHP:
class Character
{

public:

  // Set
  void SetHealth(float health)
  {
    float oldHealth = Health;
    Health = health;
    if (oldHealth != Health)
      OnHealthChanged(oldHealth, Health);
  }

  void OnHealthChanged(float OldHealth, float NewHealth)
  {
    std::cout << "Health is changed from " << OldHealth << " to " << NewHealth;
  }

  // Get
  float GetHealth() { return Health; }

protected: // yada private:

  float Health;
}

Görüldüğü üzere Health değişkeni yalnızca SetHealth metodu ile kontrol edilirse, değişiklikler tespit edilir ve değişiklik olduğunda ilgili işlemler yapılabilir.

Blueprint üzerinde ise bu işlem şöyle gerçekleştirilebilir. ClimbDown ve Khubur'un bahsetmiş olduğu gibi bir event(Event Any Damage) zaten var. Eğer Health değişkeni aynı BP içinde sadece bu eventte kontrol edilir, değiştirilirse ve Health değişkeninin Editable özelliği False yapılırsa(dışarıdan değiştirilmezse); değişmesi durumunda yapılacaklar da bu eventte yapılabilir. Böylece başka herhangi bir yerde asla değiştirilmeyeceği garanti altına alınır ve gerekenler yapılır.
jz8suo.png

Çok teşekkürler harikasın peki hasarı nasıl vericem bunu burda ayarladık diyelim.Daha sonra ben bir bölgeye girdiğimde canımdan 20 gitsin istiyorum bunun için ne yapmam lazım o bölgeye nasıl bir şema kurmamız lazım değişkenleri birbirinden çıkarmayacağız heralde takedamage gibi bir şey varıdr.
Hallettim ApplyDamage ile yapılıyormuş...