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:
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.
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
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.
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.
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:
Langkah-langkah ini menguraikan proses dasar untuk menambahkan Lobi Jaringan ke permainan multiplayer menggunakan fitur jaringan built-in Unity:
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;
}
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