123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- // --------------------------------------------------------------------------------------------------------------------
- // <copyright file="ConnectAndJoinRandom.cs" company="Exit Games GmbH">
- // Part of: Photon Unity Utilities,
- // </copyright>
- // <summary>
- // Simple component to call ConnectUsingSettings and to get into a PUN room easily.
- // </summary>
- // <remarks>
- // A custom inspector provides a button to connect in PlayMode, should AutoConnect be false.
- // </remarks>
- // <author>developer@exitgames.com</author>
- // --------------------------------------------------------------------------------------------------------------------
- //#if UNITY_EDITOR
- //using UnityEditor;
- //#endif
- using UnityEngine;
- //using Photon.Pun;
- using Photon.Realtime;
- namespace Photon.Pun.UtilityScripts
- {
- /// <summary>Simple component to call ConnectUsingSettings and to get into a PUN room easily.</summary>
- /// <remarks>A custom inspector provides a button to connect in PlayMode, should AutoConnect be false.</remarks>
- public class ConnectAndJoinRandom : MonoBehaviourPunCallbacks
- {
- /// <summary>Connect automatically? If false you can set this to true later on or call ConnectUsingSettings in your own scripts.</summary>
- public bool AutoConnect = true;
- /// <summary>Used as PhotonNetwork.GameVersion.</summary>
- public byte Version = 1;
- /// <summary>Max number of players allowed in room. Once full, a new room will be created by the next connection attemping to join.</summary>
- [Tooltip("The max number of players allowed in room. Once full, a new room will be created by the next connection attemping to join.")]
- public byte MaxPlayers = 4;
- public int playerTTL = -1;
- public void Start()
- {
- if (this.AutoConnect)
- {
- this.ConnectNow();
- }
- }
- public void ConnectNow()
- {
- Debug.Log("ConnectAndJoinRandom.ConnectNow() will now call: PhotonNetwork.ConnectUsingSettings().");
-
- PhotonNetwork.ConnectUsingSettings();
- PhotonNetwork.GameVersion = this.Version + "." + SceneManagerHelper.ActiveSceneBuildIndex;
-
- }
- // below, we implement some callbacks of the Photon Realtime API.
- // Being a MonoBehaviourPunCallbacks means, we can override the few methods which are needed here.
- public override void OnConnectedToMaster()
- {
- Debug.Log("OnConnectedToMaster() was called by PUN. This client is now connected to Master Server in region [" + PhotonNetwork.CloudRegion +
- "] and can join a room. Calling: PhotonNetwork.JoinRandomRoom();");
- PhotonNetwork.JoinRandomRoom();
- }
- public override void OnJoinedLobby()
- {
- Debug.Log("OnJoinedLobby(). This client is now connected to Relay in region [" + PhotonNetwork.CloudRegion + "]. This script now calls: PhotonNetwork.JoinRandomRoom();");
- PhotonNetwork.JoinRandomRoom();
- }
- public override void OnJoinRandomFailed(short returnCode, string message)
- {
- Debug.Log("OnJoinRandomFailed() was called by PUN. No random room available in region [" + PhotonNetwork.CloudRegion + "], so we create one. Calling: PhotonNetwork.CreateRoom(null, new RoomOptions() {maxPlayers = 4}, null);");
- RoomOptions roomOptions = new RoomOptions() { MaxPlayers = this.MaxPlayers };
- if (playerTTL >= 0)
- roomOptions.PlayerTtl = playerTTL;
- PhotonNetwork.CreateRoom(null, roomOptions, null);
- }
- // the following methods are implemented to give you some context. re-implement them as needed.
- public override void OnDisconnected(DisconnectCause cause)
- {
- Debug.Log("OnDisconnected(" + cause + ")");
- }
- public override void OnJoinedRoom()
- {
- Debug.Log("OnJoinedRoom() called by PUN. Now this client is in a room in region [" + PhotonNetwork.CloudRegion + "]. Game is now running.");
- }
- }
- //#if UNITY_EDITOR
- //[CanEditMultipleObjects]
- //[CustomEditor(typeof(ConnectAndJoinRandom), true)]
- //public class ConnectAndJoinRandomInspector : Editor
- //{
- // void OnEnable() { EditorApplication.update += Update; }
- // void OnDisable() { EditorApplication.update -= Update; }
- // bool isConnectedCache = false;
- // void Update()
- // {
- // if (this.isConnectedCache != PhotonNetwork.IsConnected)
- // {
- // this.Repaint();
- // }
- // }
- // public override void OnInspectorGUI()
- // {
- // this.isConnectedCache = !PhotonNetwork.IsConnected;
- // this.DrawDefaultInspector(); // Draw the normal inspector
- // if (Application.isPlaying && !PhotonNetwork.IsConnected)
- // {
- // if (GUILayout.Button("Connect"))
- // {
- // ((ConnectAndJoinRandom)this.target).ConnectNow();
- // }
- // }
- // }
- //}
- //#endif
- }
|