Mirror networking
- Oyun Geliştirme kursu
- İleri seviye
- Ders 15/71
- 4 dk
Mirror ile SyncVar ve Command yapısını öğrenirsin.
Mirror Networking ve NetworkBehaviour
Mirror, Unity için açık kaynaklı, yüksek performanslı bir Client-Server ağ kütüphanesidir. Standart MonoBehaviour yerine NetworkBehaviour sınıfı miras alınır.
using Mirror;
public class PlayerController : NetworkBehaviour {
[SyncVar]
public int health = 100;
}[SyncVar] niteliği (attribute) ile işaretlenen değişkenlerin sunucudaki değeri değiştiğinde, Mirror bu yeni değeri otomatik olarak tüm bağlı istemcilere aktarır.
[Command] ile İstemciden Sunucuya Çağrı
Authoritative mimaride istemciler oyun durumunu doğrudan değiştiremez. Bir istemcinin sunucuya işlem yaptırabilmesi için [Command] niteliğine sahip bir fonksiyon çağrılır.
// Istemci cagirir, yalnizca sunucuda calisir
[Command]
public void CmdFireWeapon(Vector3 direction) {
SpawnBulletOnServer(direction);
}Command fonksiyonlarının adı mutlaka Cmd ön ekiyle başlamalıdır; böylece kod okunurken istemciden sunucuya giden bir talep olduğu net anlaşılır.
Uygulama Senkronize can değerini yazdır
Bir Start metodu tanımla. İçinde int health = 100; değişkeni tanımla ve konsola "Oyuncu cani senkron: " + health metnini Debug.Log ile yazdır.
Başlangıç kodu
using UnityEngine;
public class MirrorPlayer : MonoBehaviour
{
// Start icinde can ve SyncVar bilgisini yazdir
}Örnek çözüm
using UnityEngine;
public class MirrorPlayer : MonoBehaviour
{
void Start()
{
int health = 100;
Debug.Log("Oyuncu cani senkron: " + health);
}
}Beklenen çıktı
Oyuncu cani senkron: 100
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Mirror kütüphanesinde bir değişkenin sunucudaki değerinin tüm istemcilere otomatik senkronize olmasını sağlayan nitelik hangisidir?
- [SyncVar] Doğru cevap
- [ClientRpc]
- [TargetRpc]
- [Command]
Açıklama: [SyncVar] (Synchronized Variable), sunucuda yapılan değişiklikleri otomatik olarak tüm istemcilerin yerel kopyasına senkronize eder.
2 SyncVar tanımla
[____] public int health = 100;
[SyncVar] public int health = 100;
Açıklama: Mirror kütüphanesinde değişken senkronizasyonu için '[SyncVar]' niteliği kullanılır.
3 Mirror kavramları
| Kavram | Anlamı |
|---|---|
NetworkBehaviour |
Ağ özellikli bileşenlerin temel sınıfı |
[SyncVar] |
Sunucudan istemciye senkron değişken |
[Command] |
İstemcinin sunucuda çalıştırdığı metot |
CmdOnEk |
Command fonksiyonlarının zorunlu ön adı |