CodeBlanks Logo Icon CodeBlanks

Mirror networking

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

Player.cs
using UnityEngine;

public class MirrorPlayer : MonoBehaviour
{
    // Start icinde can ve SyncVar bilgisini yazdir
}

Örnek çözüm

Player.cs
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

Soru
[____] public int health = 100;
Cevap
[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ı

İleri seviye bölümündeki tüm dersler