Oyunlarınızı Yandex Games’de yayınlayarak küresel bir kitleye ulaşabilir, bunun yanında oyun içi satışlar ve reklamlardan gelir elde edebilirsiniz. Yayınlamak veya daha fazla bilgi almak için linke tıklayabilirsiniz. mltplyr.com/yandex-sd
kanalın süper bende god of war oyunu yapıyorum örnek sahne ve deneme kanalımda yayınlığcam düşmanı tutup fırlatma özeliği olcak biraz detaylı 70 yaşında biri multiplay online ders vermişti süper anlatı🙂
Kanalini yeni kesfettim, bu tarz daha advanced Unity konularini Turkce bu kalitede gormek cok guzel, eline saglik! Zenject ile ilgili bence Signallara da muhakkak deginmelisin, generic eventler icin guzel bir alternatif
Çok teşekkürler, Zenject Signal'lerini kişisel olarak pek kullanmadığım için değinmek istemedim açıkçası. Onlar yerine açık kaynak bir Signal sistemi olan MessagePipe'ı bir video konusu yapmayı planlıyorum. UniTask'ın yapımcısı Cysharp'ın elinden çıkmış bir iş. Kullanım ve hız bakımından Zenject Signal'lerinin önüne geçmiş gibi duruyor.
Kalitesi yüksek ve Türkçe unity + code içerikleri görmek sevindirici, açıklamalar da gayet anlaşılır ve akıcı eline sağlık :) Kanalın daha da başarılı bir şekilde ilerleyeceğinden şüphem yok takipteyim :) Sadece videoyla ilgili sormak istediğim küçük bişe var; 10 farklı class'ı inject etmem gerektiğinde method injection yerine [Inject] field kullanırsam 10 satırda tüm injection işlemlerimi tamamlarken, method injection kullandığımda bu 10 satır hala 10 satır olarak kalıyor çünkü sadece [Inject] field'larını yazmıyor oluyoruz, private tanımlamalar hala duruyor. Ek olarak 10 parametreli bir method yazmak zorunda kalıyoruz. Yani hem satır sayısı artıyor, hem de yeni bir injection gerektiğinde private field'ı eklemem yeterli kalmayıp her eklemede methodu güncellemem gerekiyor. Bu durumları düşündüğümüzde [Inject] field yerine method injection ile parametreleri girip toplu inject etmek arasında tam olarak nasıl bir kolaylaştırma oluyor ?
@@batuhanartan Öncelikle değerli yorumunuz için çok teşekkür ederim. Aslında herhangi bir kolaylaştırma olmuyor söylediğiniz durumda, sadece benim fikrimce kod okunurluğu bir nebze artıyor. Fakat tabii ki herkesin yazdığı kod kendine olduğu için ve iki işlem de aynı sonucu verdiği için istediğinizi seçmek size kalmış. Orada bence ibaresini kullanmayı unutmuşum muhtemelen, kendi fikirlerim yani sadece. Kusura bakmayın 😅
@skinnydev Est. ne kusuru ☺Teknik olarak gözden kaçırdığım bir durum varsa öğrenmek için sormuştum eleştiri amaçlı değil, Türkçe içerik olarak çok değerli bir kanal oluşturmuşsun çalışmalarının devamını merakla bekliyorum
15:37 "...ki zaten serializefield'i kaldırdığım için o referans da gitti" maalesef öyle bir şey yok, o atama kalmaya devam ediyor. Private atamaları inspectordaki 3 noktadan kodu resetleyerek temizleyebilirsiniz. Bilginiz olsun.
hep ben en ileri seviye oyunları yapmayı seviyorum supergirl oyunu çok farklı yapcam lazer buz üflemesi bir objeyi kaldırıp fırlatma uçma özeliği gibi bir çok detay olcak 3d unity best game engine 🙂
Proje küçükse kesinlikle overengineering olur. Fakat proje büyük bir projeyse monolarda kullanımının da faydalarını gördüm diyebilirim. Değerli yorumunuz için teşekkürler ❤
Visual studio'da kod(metin) düzenleme alanında kasmalar donmalar oluyor. Beni hayattan bezdirdi açıkçası. Sistemim i5 12.nesil. Bu islemciyi kullanan tanidiklarimda. Bu sorun yok
Mono olmayan sınıflardan bahsediyorsunuz sanırım. Referans verme işleminde ek olarak new'lemezseniz hata fırlatır çünkü objeyi bulamaz. Nesne oluşturma dediğimiz şey ise zaten new'lemektir. Aralarındaki farkı böyle özetleyebilirim
@@skinnydev hocam public yapıp objeyı ustune bıraksak yanı soyle public Controller controller bununla Controller contoller=new Controller() arasındakı fark ne? public Controller controller bu referans verme olmuyor mu hıyerarsıde ustune bırakırız o gameObjectı bulur zaten
Hocam ikidir aynı şeyi yazıyorum kusura bakmayın ama compile time sıkıntısı çekiyorum en ufak bişey yazdığımda 20 sn beklemem gerekiyo library silmem yetmedi. ne yapmam gerekiyor sizinki gibi bi compile süresi görmem için
@@gesat03'ün de dediği gibi, bir de benim sistemim şuan güçlü bir sistem bu yüzden hızlı açılıyor, açılmadığı kısımları da editte kırpıyorum. Bu yüzden yanlış bir algı olmasın 😅
Oyunlarınızı Yandex Games’de yayınlayarak küresel bir kitleye ulaşabilir, bunun yanında oyun içi satışlar ve reklamlardan gelir elde edebilirsiniz. Yayınlamak veya daha fazla bilgi almak için linke tıklayabilirsiniz.
mltplyr.com/yandex-sd
kanalın süper bende god of war oyunu yapıyorum örnek sahne ve deneme kanalımda yayınlığcam düşmanı tutup fırlatma özeliği olcak biraz detaylı 70 yaşında biri multiplay online ders vermişti süper anlatı🙂
Bu adamı 5 yıl sonra düşünemiyorum :) eline sağlık abi
Teşekkür ederim
Kanalini yeni kesfettim, bu tarz daha advanced Unity konularini Turkce bu kalitede gormek cok guzel, eline saglik!
Zenject ile ilgili bence Signallara da muhakkak deginmelisin, generic eventler icin guzel bir alternatif
Çok teşekkürler, Zenject Signal'lerini kişisel olarak pek kullanmadığım için değinmek istemedim açıkçası. Onlar yerine açık kaynak bir Signal sistemi olan MessagePipe'ı bir video konusu yapmayı planlıyorum. UniTask'ın yapımcısı Cysharp'ın elinden çıkmış bir iş. Kullanım ve hız bakımından Zenject Signal'lerinin önüne geçmiş gibi duruyor.
Hop hemen geldik :D Henüz videoyu izlemedim lakin bilgilendirici bir video olduğuna eminim. Şimdiden elinize sağlık. ^^
Çok teşekkür ederim
Kalitesi yüksek ve Türkçe unity + code içerikleri görmek sevindirici, açıklamalar da gayet anlaşılır ve akıcı eline sağlık :) Kanalın daha da başarılı bir şekilde ilerleyeceğinden şüphem yok takipteyim :)
Sadece videoyla ilgili sormak istediğim küçük bişe var;
10 farklı class'ı inject etmem gerektiğinde method injection yerine [Inject] field kullanırsam 10 satırda tüm injection işlemlerimi tamamlarken, method injection kullandığımda bu 10 satır hala 10 satır olarak kalıyor çünkü sadece [Inject] field'larını yazmıyor oluyoruz, private tanımlamalar hala duruyor. Ek olarak 10 parametreli bir method yazmak zorunda kalıyoruz. Yani hem satır sayısı artıyor, hem de yeni bir injection gerektiğinde private field'ı eklemem yeterli kalmayıp her eklemede methodu güncellemem gerekiyor. Bu durumları düşündüğümüzde [Inject] field yerine method injection ile parametreleri girip toplu inject etmek arasında tam olarak nasıl bir kolaylaştırma oluyor ?
@@batuhanartan Öncelikle değerli yorumunuz için çok teşekkür ederim. Aslında herhangi bir kolaylaştırma olmuyor söylediğiniz durumda, sadece benim fikrimce kod okunurluğu bir nebze artıyor. Fakat tabii ki herkesin yazdığı kod kendine olduğu için ve iki işlem de aynı sonucu verdiği için istediğinizi seçmek size kalmış. Orada bence ibaresini kullanmayı unutmuşum muhtemelen, kendi fikirlerim yani sadece. Kusura bakmayın 😅
@skinnydev Est. ne kusuru ☺Teknik olarak gözden kaçırdığım bir durum varsa öğrenmek için sormuştum eleştiri amaçlı değil, Türkçe içerik olarak çok değerli bir kanal oluşturmuşsun çalışmalarının devamını merakla bekliyorum
@ Çok teşekkürler, Design Pattern serisi gibi bir Optimizasyon serisi hazırlıyorum, o da güzel olacak diye umuyorum 🙏
@@skinnydev "Optimizasyon serisi", Türk oyun sektörünün en çok ihtiyacı olan dersler.
Elinize sağlık hocam çok yararlı bir video olmuş. Zenject için devam videolarını da bekliyoruz
Çok teşekkürler. Seve seve.
Temel olarak cok iyi bir giris olmus. Bence devam edilmeli bolumlere. Eline saglik.
@@rickcarpenter6951 Çok teşekkürler 😊
Anlaşılır ve faydalı bi anlatım olmuş. Bu konuya dair bir seri çok iyi olur. Ağzına sağlık.
Inject birden fazla değişkeni olan classlarda kullanılabiliyor mu yoksa sadece singleton gibi mi kullanılabiliyor?
@@onurozulku4314Kullanımın bir sınırı yok istediğiniz gibi kullanabiliyorsunuz
Eline Sağlık uzun süredir katıl butonunu bekliyordum geldi 😊
Yaklaşık 1 yıldır açık katıl butonumuz 😁
@@skinnydev nasıl ya :D
Yine harika bir video olmuş. Eline sağlık.
Ellerine sağlık valla bayadır aklımdaydı seninlede giriş yaptım, bu güzel video için teşekkür ederim 🤙🏻
Rica ederim, değerli yorumunuz için teşekkürler ☺
tertemiz video eline sağlık
Çok teşekkür ederim
Fazlasıyla etkili bir şeye benziyor hemen denemeye başlıyorum
Mükemmel ellerine sağlık !!!
Çok teşekkür ederim
Hocam süper bilgilendirici video olmuş emeğinize sağlık 😎😎👏
15:37 "...ki zaten serializefield'i kaldırdığım için o referans da gitti" maalesef öyle bir şey yok, o atama kalmaya devam ediyor. Private atamaları inspectordaki 3 noktadan kodu resetleyerek temizleyebilirsiniz. Bilginiz olsun.
Bilgi için teşekkürler ☺
Elinize sağlık çok faydalı bir video olmuş
❤❤
Eline sağlık güzel video olmuş.
OBAAA
hep ben en ileri seviye oyunları yapmayı seviyorum supergirl oyunu çok farklı yapcam lazer buz üflemesi bir objeyi kaldırıp fırlatma uçma özeliği gibi bir çok detay olcak 3d unity best game engine 🙂
@@rosegame2505 Harika, başarılar
Monolarda kullanımı biraz overengineering olabilir sanki. Ama veri odaklı oyunlarda kesinlikle işe yarar.
Proje küçükse kesinlikle overengineering olur. Fakat proje büyük bir projeyse monolarda kullanımının da faydalarını gördüm diyebilirim. Değerli yorumunuz için teşekkürler ❤
Hocam bence arka plan müziği dikkat dağıtıcı. Video için teşekkürler.
Geri dönüş için teşekkürler. Daha sade bir şeyler araştırayım
Faydalı bir içerik olmuş eline sağlık. Ancak sanırım non monobehaviour'u non monobehaviour classtan çağıramıyoruz
Video çok iyi eline sağlık hocam. Ufak bir sorum var düşman birimleri için yaptığım statelerden birinde bunu nasıl kullanabilirim? Bu enemy birimlerimin saldırı durumunda çalışan script
Object Pooldan nesne çekim işini singleten ile yapıyordum videoyu görünce bu sisteme geçmek istediim ama erişemiyorum. Ahanda kod bu :d
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Zenject;
public class EnemyAttackState : EnemyState
{
private Transform _playerTransform;
private float _timer;
private float _timeBetweenShots = 2f;
private float _exitTimer;
private float _timeTillExit;
private float _distancetoCountExit = 3f;
private float bulletSpeed = 10f;
private PoolStorage poolStorage;
public EnemyAttackState(Enemy enemy, EnemyStateMachine enemyStateMachine) : base(enemy, enemyStateMachine)
{
}
// Dependency Injection ile PoolStorage'ı alın
public EnemyAttackState(Enemy enemy, EnemyStateMachine enemyStateMachine, PoolStorage poolStorage)
: base(enemy, enemyStateMachine)
{
this.poolStorage = poolStorage;
}
public override void AnimationTriggerEvent(Enemy.AnimationTriggerType triggerType)
{
base.AnimationTriggerEvent(triggerType);
}
public override void EnterState()
{
base.EnterState();
Debug.Log("AttackStateEnemy");
enemy.targetDir = (enemy.target.position - enemy.transform.position).normalized;
// Hedef ile pozisyon arasındaki farkı hesaplayın, Y eksenini sıfırlayın
Vector3 targetDir = enemy.target.position - enemy.transform.position;
// Y eksenini sıfırlayarak sadece XZ düzleminde hesaplama yapıyoruz
targetDir.y = 0;
// Yön vektörünü normalize et (birim vektör yap)
targetDir = targetDir.normalized;
// Düşmanı hedefe doğru döndür (sadece yatay eksende)
enemy.transform.rotation = Quaternion.LookRotation(targetDir);
enemy.ChangeAnimationState(enemy.animatoinClass.ENEMY_SHOOT_AUTO);
EnemyFireType(enemy.myWeapon.enemy_Gnnr_Type);
}
public override void ExitState()
{
base.ExitState();
}
public override void FrameUpdate()
{
base.FrameUpdate();
Debug.Log("AttackStateEnemy");
_timer += Time.deltaTime;
if (_timer > _timeBetweenShots)
{
_timer = 0;
// Havuzdan mermi al
GameObject bullet = poolStorage.GetFromPool("bullet");
bullet.transform.position = enemy.myWeapon.myBarrelT.position;
// Hedefe yönlendir
Vector3 targetDir = (enemy.target.position - enemy.myWeapon.myBarrelT.position).normalized;
bullet.transform.forward = targetDir;
// Kuvvet uygula
bullet.GetComponent().AddForce(targetDir * bulletSpeed, ForceMode.Impulse);
// Belirli bir süre sonra mermiyi havuza iade et
poolStorage.StartReturnBulletCoroutine(bullet, 3f);
}
if (Vector2.Distance(enemy.target.position, enemy.transform.position) > _distancetoCountExit)
{
_exitTimer += Time.deltaTime;
if (_exitTimer > 0)
{
enemy.StateMachine.ChangeState(enemy.ChaseState);
}
}
else
{
_exitTimer = 0;
}
}
private IEnumerator ReturnBulletToPoolAfterTime(GameObject bullet, float delay)
{
yield return new WaitForSeconds(delay);
poolStorage.ReturnToPool(bullet);
}
public override void PhysicsUpdate()
{
base.PhysicsUpdate();
}
private void BulletFiring()
{
}
private void BombExplosive()
{
Debug.Log("Spider bomb = ");
enemy.myWeapon.ammoPrefab.SetActive(true);
Collider[] colliders = Physics.OverlapSphere(enemy.transform.position, enemy.myWeapon.explosionRadius);
foreach (Collider collider in colliders)
{
if (collider.tag == enemy.enemyGroupTag && collider.GetComponent())
{
DamageExplosive(collider.transform);
Debug.Log("Spider bomb = " + collider.name);
}
}
}
private void DamageExplosive(Transform enemyObj)
{
TryModelController e = enemyObj.GetComponent();
if (e != null)
{
e.Damage(enemy.myWeapon.damage);
enemy.Die();
enemy.myWeapon.damage = 0;
}
}
private void LaserFiring()
{
}
public void EnemyFireType(EnemyGunnerType enmyGnrType)
{
switch (enmyGnrType)
{
case EnemyGunnerType.Bullet:
BulletFiring();
break;
case EnemyGunnerType.Laser:
LaserFiring();
break;
case EnemyGunnerType.Bomb:
BombExplosive();
break;
}
}
void OnDrawGizmosSelected()
{
Gizmos.color = Color.red;
Gizmos.DrawWireSphere(transform.position, myWeapon.explosionRadius);
}
}
Visual studio'da kod(metin) düzenleme alanında kasmalar donmalar oluyor. Beni hayattan bezdirdi açıkçası. Sistemim i5 12.nesil. Bu islemciyi kullanan tanidiklarimda. Bu sorun yok
VSCode’a geçmeyi düşünebilirsiniz. Ben çok memnunum
@@skinnydev ara ara düşünüyorum bunu ama Visual Studio'nun kullanım kolaylığı insanı cezbediyor.
Hocam sizce referans verme ıle nesne oluşturm arasındaki fark nedir ? ikiside ayni işlevi gormuyor mu
Mono olmayan sınıflardan bahsediyorsunuz sanırım. Referans verme işleminde ek olarak new'lemezseniz hata fırlatır çünkü objeyi bulamaz. Nesne oluşturma dediğimiz şey ise zaten new'lemektir. Aralarındaki farkı böyle özetleyebilirim
@@skinnydev hocam public yapıp objeyı ustune bıraksak yanı soyle public Controller controller bununla Controller contoller=new Controller() arasındakı fark ne? public Controller controller bu referans verme olmuyor mu hıyerarsıde ustune bırakırız o gameObjectı bulur zaten
Hocam ikidir aynı şeyi yazıyorum kusura bakmayın ama compile time sıkıntısı çekiyorum en ufak bişey yazdığımda 20 sn beklemem gerekiyo library silmem yetmedi. ne yapmam gerekiyor sizinki gibi bi compile süresi görmem için
1. Güçlü bir işlemci
2. SSD: unity ve proje aynı ssd de olmalı
3. Project Settings => Editor => Enter Play Mode Options kutucuğunu işaretle
@@gesat03'ün de dediği gibi, bir de benim sistemim şuan güçlü bir sistem bu yüzden hızlı açılıyor, açılmadığı kısımları da editte kırpıyorum. Bu yüzden yanlış bir algı olmasın 😅
Hadi bakalım.
More more more more more
🎉🎉🎉
Monolar için tek bir SO kullanmak daha mantıklı gibi geldi bakınca
Scriptable Object Installer diyorsan onun olayı bambaşka, diğer türlü anlayamadım 😁
Yandex games de herkese sponsorluk vermiş gerçekten bu kadar iyi mi ?
Keşfederek öğrenebiliriz 😊
singeletonun yerini tutmaz bence
Maalesef Singleton çoğu durumda bir Anti Pattern