59
ΑΝΑΠΤΥΞΗ 3D ΣΚΟΠΕΥΤΙΚΟΥ ΠΑΙΧΝΙΔΙΟΥ ΤΡΙΤΟΥ ΠΡΟΣΩΠΟΥ ΠΟΛΛΑΠΛΩΝ
ΠΑΙΚΤΩΝ ΤΥΠΟΥ ROGUELITE
Μόλις ο παίκτης βρει και πατήσει το δωμάτιο που θέλει να συνδεθεί, καλείται η
συνάρτηση JoinRoomOnClick() από το script RoomButton.cs (Εικόνα 42) όπου εκτελείται η εντολή
PhotonNetwork.Join Room(roomName). Μόλις επιτευχθεί η σύνδεση με το δωμάτιο γίνεται η
ανάκληση της συνάρτησης OnJoinedRoom().
Εικόνα 42 Σύνδεση σε δωμάτιο
Για να επιτευχθεί η ανανέωση της λίστας με τα διαθέσιμα δωμάτια, τότε αποσυνδεόμαστε
από την αίθουσα, και συνδεόμαστε ξανά (Εικόνα 44). Αυτό όμως μπορεί να προκαλέσει τον
διπλασιασμό των δωματίων επειδή γίνεται η ανάκληση της συνάρτησης OnRoomListUpdate(),
οπότε είναι σημαντικό να διαγράψουμε όλα τα παλαιότερα δωμάτια προτού τα ανανεώσουμε με
την συνάρτηση OnJoinedLobby() (Εικόνα 43).
Εικόνα 43 Override της συνάρτησης OnJoinedLobby()
Εικόνα 44 Επανασύνδεση στην αίθουσα
4.1.3 Διαχείριση δωματίου
Την στιγμή που ο παίκτης συνδεθεί σε ένα δωμάτιο, γίνεται η αναμενόμενη ανάκληση
OnJoinedRoom() (Εικόνα 45). Στην συνάρτηση αυτή για να εμφανίσουμε το όνομα του δωματίου
καλούμε την συνάρτηση PhotonNetwork.CurrentRoom.Name. Επίσης ενεργοποιείται η
δυνατότητα της εκκίνησης του παιχνιδιού μόνο στον host. Μετέπειτα διαγράφουμε τους παίκτες
με την συνάρτηση ClearPlayerListings(), και τους εμφανίζουμε με την συνάρτηση ListPlayers()
(Εικόνα 46). Ο λόγος που γίνεται πρώτα η διαγραφή, είναι για να αποφύγουμε την περίπτωση του