Jaringan Discovery
Menggunakan API Layer Transportasi

Lobi multiplayer

Important: UNet adalah solusi yang diuraikan, dan Solusi Multiplayer baru dan NetworkingSistem Unity yang memungkinkan game multiplayer di jaringan komputer. More info
Lihat di Glossary
(Netcode untuk GameObjects) sedang berkembang. Untuk informasi lebih lanjut dan langkah selanjutnya melihat informasi di .

Kebanyakan game multiplayer memiliki "lobby"; sebuah SceneAdegan berisi lingkungan dan menu permainan Anda. Pikirkan setiap file Adegan unik sebagai tingkat yang unik. Di setiap Adegan, Anda menempatkan lingkungan, hambatan, dan dekorasi, pada dasarnya merancang dan membangun permainan Anda dalam potongan-potongan. More info
Lihat di Glossary
dalam permainan untuk pemain untuk bergabung sebelum bermain game yang sebenarnya. Di lobi, pemain dapat memilih pilihan dan mengatur diri mereka sebagai siap untuk permainan untuk memulai.

Unity menyediakan Komponen Jaringan Lobby Manager sebagai cara bagi Anda untuk menerapkan lobi untuk permainan Anda dengan mudah.

Komponen Network Lobby Manager menyediakan lobi untuk game Unity Multiplayer. Ini termasuk fitur berikut:

  • Antarmuka pengguna built-in sederhana untuk berinteraksi dengan lobi
  • Batasi jumlah pemain yang dapat bergabung
  • Mendukung beberapa pemain per klien, dengan batas jumlah pemain per klien
  • Mencegah pemain dari bergabung permainan yang masuk
  • Mendukung keadaan “ready” untuk klien, jadi permainan dimulai ketika semua pemain siap
  • Konfigurasi data untuk setiap pemain
  • Pemain re-join lobi ketika pertandingan selesai
  • Fungsi virtual yang memungkinkan logika kustom untuk acara lobi

Berikut adalah metode virtual Network Lobby Manager. Lihat dokumentasi Referensi API pada kelas NetworkLobbyManager untuk rincian lebih lanjut. Ada daftar terpisah untuk metode yang disebut pada klien dan di server. Anda dapat menulis implementasi Anda sendiri untuk metode ini untuk mengambil tindakan ketika setiap peristiwa ini terjadi.

NetworkLobbyManager metode virtual yang disebut pada server:

NetworkLobbyManager metode virtual yang disebut pada client:

Semua server di atas dan metode klien memiliki implementasi default kosong, kecuali untuk OnLobbyServerPlayersReady** **, yang memanggil ServerChangeScene dengan PlayScene (perempat adegan yang ditugaskan ke lapangan Play Scene di inspektur Manager Lobby.

Pemain lobi GameObjects

Ada dua jenis pemain Prefab untuk Lobby Manager: Lobby Player PrefabAn asset type that allows you to store a GameObject complete with components and properties. The prefab acts as a template from which you can create new object instances in the scene. More info
See in Glossary
dan** Game Player Prefab**. Ada bidang untuk setiap komponen Network Lobby Manager.

Komponen Jaringan Lobby Manager

Home > Sitemap

Prefab yang Anda berikan ke slot Lobby Player Prefab harus memiliki terpasang Komponen Pemain Lobi Jaringan. Setiap klien yang bergabung dengan Lobby mendapatkan pemain Lobby baru GameObjectObjek mendasar dalam adegan Unity, yang dapat mewakili karakter, props, pemandangan, kamera, waypoints, dan banyak lagi. Fungsi GameObject didefinisikan oleh Komponen yang melekat padanya. More info
Lihat di Glossary
, dibuat dari Lobby Player Prefab. Unity membuat pemain lobi GameObject ketika klien terhubung (yang ada, ketika pemain bergabung dengan permainan), dan ada sampai pemutusan klien.

Komponen Network Lobby Player memegang state “ready” untuk setiap pemain, dan menangani perintah sementara di lobi. Anda dapat menambahkan pengguna scriptsSepotong kode yang memungkinkan Anda untuk membuat Komponen Anda sendiri, memicu peristiwa permainan, memodifikasi sifat komponen dari waktu ke waktu dan menanggapi input pengguna dengan cara apa pun yang Anda sukai. More info
Lihat di Glossary
ke prefab untuk menahan data pemain khusus permainan.

Komponen Network Lobby Player memasok beberapa callback metode virtual yang dapat digunakan untuk perilaku lobi kustom. Ini adalah:

public virtual void OnClientEnterLobby();
public virtual void OnClientExitLobby();
public virtual void OnClientReady(bool readyState);

Unity memanggil metode OnClientEnterLobby pada klien ketika permainan memasuki lobi. Ini terjadi ketika adegan lobi dimulai untuk pertama kalinya, dan juga ketika kembali ke lobi dari adegan gameplay.

Unity memanggil metode OnClientExitLobby pada klien ketika permainan keluar lobi. Ini terjadi ketika beralih ke adegan gameplay.

Unity memanggil metode OnClientReady pada klien ketika keadaan siap dari perubahan pemain.

Permainan Pemain Prefab

Sebuah permainan dimulai ketika semua pemain telah menunjukkan mereka siap. Ketika permainan dimulai, Unity menciptakan GameObject untuk setiap pemain, berdasarkan Game Player Prefab. Unity menghancurkan GameObjects ini pada akhir permainan, ketika pemain ketika masuk kembali lobi. Perintah pegangan Game Player Prefab sementara dalam permainan. Prefab ini adalah GameObject berjaring standar, dan harus memiliki terpasang Komponen Identitas Jaringan.

Pemain Minimum

Pada komponen Network Lobby Manager, lapangan Minimum Players mewakili jumlah minimum pemain yang perlu menunjukkan bahwa mereka siap sebelum pertandingan dimulai. Jika jumlah klien yang terhubung mencapai nilai Minimum Players, kemudian menunggu semua klien yang terhubung menjadi "Ready" memulai Pertandingan.

Contohnya jika “Pemain Minimum” diatur ke 2:

  • Mulai satu contoh permainan, dan mulai permainan dalam mode host. Kemudian di antarmuka lobi game Anda, tekan "Start" untuk pemain Anda. Anda masih di lobi, karena jumlah minimum pemain siap untuk memulai permainan 2.
  • Mulai dua lebih banyak kasus permainan, dan mulai game-game dalam mode klien dalam kasus-kasus tersebut. Tunggu untuk semua pemain yang terhubung (dalam contoh ini, tiga) untuk menjadi siap. Tekan "Start" di Lobby UI(User Interface) Memungkinkan pengguna untuk berinteraksi dengan aplikasi Anda. Unity saat ini mendukung tiga sistem UI. More info
    Lihat di Glossary
    untuk satu pemain. Sekarang, dua pemain siap, tetapi masih di lobi. Tekan "Start" di Lobby UI untuk pemain terakhir. Semua pemain bergerak ke adegan permainan utama.

Menambahkan lobi ke permainan

Langkah-langkah ini menguraikan proses dasar untuk menambahkan Lobi Jaringan ke permainan multiplayer menggunakan fitur jaringan built-in Unity:

  • Buat Adegan baru untuk lobi
  • Tambahkan Adegan ke Pengaturan Build (File > Build Settings… > Add Open Scenes), sebagai Adegan pertama
  • Buat GameObject baru di Adegan baru dan mengubah nama itu LobbyManager
  • Tambahkan komponen Jaringan Lobby Manager ke LobbyManager GameObject
  • Tambahkan komponen HUD Network ManagerKomponen Jaringan yang mengelola state jaringan proyek. More info
    Lihat di Glossary
    ke LobbyManager GameObject
  • Buka InspectorJendela Unity yang menampilkan informasi tentang Pengaturan GameObject yang dipilih saat ini, aset atau proyek, memungkinkan Anda untuk memeriksa dan mengedit nilai. More info
    Lihat di Glossary
    untuk komponen Network Lobby Manager
  • Di Jaringan Lobby Manager, atur Lobby Scene ke Adegan yang mengandung LobbyManager GameObject
  • Di Jaringan Lobby Manager, set Play Scene ke main gameplay Adegan untuk permainan
  • Buat GameObject baru dan nama ulang LobbyPlayer
  • Tambahkan Komponen Network Lobby Player ke ruang LobbyPlayer%
  • Buat prefab untuk GameObject LobbyPlayer, dan hapus instance dari Adegan
  • Mengatur kolom LobbyPlayerPrefab (dalam inspektur Jaringan Lobby Manager) ke prefab LobbyPlayer prefab
  • Mengatur lapangan GamePlayerPrefab (dalam Inspektur Jaringan Lobby) ke prefab untuk pemain dalam permainan utama
  • Simpan Layar
  • Jalankan permainan

Versi ini dari Network Lobby Manager adalah implementasi yang sangat sederhana, dan menggunakan antarmuka pengguna placeholder, banyak seperti Network Manager HUD. Sebelum Anda melepaskan permainan Anda, Anda harus mengganti ini dengan antarmuka pengguna Anda sendiri yang sesuai dengan desain visual game Anda dan persyaratan fitur.

Sebagai contoh antarmuka pengguna yang lebih baik, lihat tersedia di Asset StoreSebuah perpustakaan yang berkembang dari aset gratis dan komersial yang diciptakan oleh Unity dan anggota komunitas. Menawarkan berbagai aset, dari tekstur, model dan animasi ke seluruh contoh proyek, tutorial dan ekstensi Editor. More info
Lihat di Glossary
.

Kelas NetworkLobbyManager memiliki banyak callback fungsi virtual untuk perilaku lobi kustom. Fungsi yang paling penting adalah OnLobbyServerSceneLoadedForPlayer, yang disebut pada server untuk setiap pemain ketika mereka beralih dari lobi ke permainan utama. Ini adalah tempat yang ideal untuk menerapkan pengaturan dari lobby GameObject ke pemain GameObject.

    // for users to apply settings from their lobby player GameObject to their in-game player GameObject
    public override bool OnLobbyServerSceneLoadedForPlayer(GameObject lobbyPlayer, GameObject gamePlayer)
    {
        var cc = lobbyPlayer.GetComponent<ColorControl>();
        var player = gamePlayer.GetComponent<Player>();
        player.myColor = cc.myColor;
        return true;
    }

Proyek Sampel

Ada proyek sampel di ** Unity Asset Store ** yang menggunakan Network Lobby Manager dan menyediakan GUI untuk lobi. Anda dapat menggunakan ini sebagai titik awal untuk membuat lobi Anda sendiri untuk permainan multiplayer Anda. Sitemap

Jaringan Discovery
Menggunakan API Layer Transportasi