CodeBlanks Logo Icon CodeBlanks

RPC çağrıları

ClientRpc ve ServerRpc ile uzak çağrı yapmayı öğrenirsin.

Uzak Yordam Çağrıları (RPC)

RPC (Remote Procedure Call), bir makinede çalışan kodun ağ üzerinden başka bir makinedeki fonksiyonu tetiklemesini sağlar. Oyunlarda görsel efektleri, sesleri veya anlık duyuruları tüm oyunculara iletmek için kullanılır.

// Sunucuda cagirilir, tum bagli istemcilerde calisir
[ClientRpc]
public void RpcPlayExplosionEffect(Vector3 pos) {
    Instantiate(explosionPrefab, pos, Quaternion.identity);
}

Mirror'da sunucudan istemcilere yapılan çağrılar [ClientRpc] niteliği ve Rpc ön eki ile belirtilir.

ServerRpc ve Netcode for GameObjects

Unity'nin resmi çözümü olan Netcode for GameObjects (NGO) kütüphanesinde RPC çağrıları açıkça adlandırılır: İstemciden sunucuya giden çağrılara [ServerRpc], sunucudan istemcilere giden çağrılara ise [ClientRpc] denir.

// NGO kuralinda ServerRpc sonek ile biter
[ServerRpc]
public void SubmitScoreServerRpc(int score) {
    // Sunucu skoru kaydeder
}

Bu simetrik yapı veri akışının yönünü kod seviyesinde son derece açık ve denetlenebilir kılar.

Uygulama ClientRpc çağrı akışı

Bir Start metodu tanımla. İçinde konsola "Sunucudan tum istemcilere ClientRpc gonderildi" metnini Debug.Log ile yazdır.

Başlangıç kodu

Player.cs
using UnityEngine;

public class RpcController : MonoBehaviour
{
    // Start icinde RPC akisini yazdir
}

Örnek çözüm

Player.cs
using UnityEngine;

public class RpcController : MonoBehaviour
{
    void Start()
    {
        Debug.Log("Sunucudan tum istemcilere ClientRpc gonderildi");
    }
}

Beklenen çıktı

Sunucudan tum istemcilere ClientRpc gonderildi

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Sunucunun tüm bağlı istemcilerde aynı anda bir patlama efekti oynatmak için kullandığı RPC türü hangisidir?

  • StaticRpc
  • ClientRpc Doğru cevap
  • ServerRpc
  • LocalRpc

Açıklama: Sunucudan tüm istemcilere uzaktan fonksiyon çağırmak için ClientRpc (veya Rpc ön ekli metotlar) kullanılır.

2 ClientRpc tanımla

Soru
[____] public void RpcPlayExplosion() {}
Cevap
[ClientRpc] public void RpcPlayExplosion() {}

Açıklama: Sunucunun tüm istemcilerde çalıştırması istenen metotlar '[ClientRpc]' niteliği ile tanımlanır.

3 RPC mekanizmaları

Kavram Anlamı
RPC Uzak makinede fonksiyon çağrısı
ClientRpc Sunucudan tüm istemcilere giden çağrı
ServerRpc İstemciden sunucuya giden talep çağrısı
TargetRpc Sunucudan tek bir istemciye çağrı

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