Search for Photon Unity Networking in the Unity Asset Store, then download and import it into your project. (Note whether you are downloading PUN1 or PUN2. This tutorial uses PUN2, as there may be some compatibility issues with PUN1. It is recommended to use PUN2).
Pay attention to resolving issues related to assemblies.
Open the assembly of NRSDK.
Find the "Assembly Definition References" section and click the "+" button to add a new reference. In the new reference, select the Photon assembly PhotonUnityNetworking and PhotonRealtime. Click the "Apply" button to save your changes.
2. Set up Photon in Unity
Register and create a new application on the official website of Photon, then obtain the App ID for your application.
In Unity, open PhotonServerSettings (Window > Photon Unity Networking), and then enter your App ID.
Note that the self-hosted server is only compatible with Windows operating systems. For details, please refer to the official document of photon.
Download Photon Server SDK and extract the server package to any place - preferably an empty folder which you prepared beforehand.
Get a license, claim it and save it to "deploy\bin_Win64".
Start "PhotonControl.exe" and confirm the admin rights for this application. They are needed for the option to set up Photon as a Service. Look out for the tray-bar icon (bottom right by default). Click the white/grey icon to open a menu that controls Photon.
Pick LoadBalancing (MyCloud) from the Photon Instances and "Start as Application". Now you started Photon.
Now you can connect clients running on the same machine.
To connect clients from a local network, simulated device or the public internet, change the IP Address Config. The next steps are to set up the method for local network. (Use one local host as a server, and then connect other client devices to the same Wi-Fi as that server.)
In Unity, open PhotonServerSettings (Window > Photon Unity Networking, then click Locate PhotonServerSettings)
Modify PhotonServerSettings: unselect "Use Name Server", fill in the IP address and port number of the self-hosted server (if using UDP protocol, the default port number is 5055).
You can find your local server IP here:
Modify the PublicIpAddress field in GameServer.xml.config to the IP address of the self-hosted server (default is 127.0.0.1). You can find this file in: deploy\LoadBalancing\GameServer\bin
3. Joining a room
A crucial prerequisite for sharing an anchor among different users is that they are in the same room. Therefore, we need to set up a script to allow them to join the same room.
The joinedRoomIndicator is used to indicate a successful room joining. The method used here is to change the color of the join button after successfully joining.
usingUnityEngine;usingPhoton.Pun;usingPhoton.Realtime;usingUnityEngine.UI;publicclassJoinRoomButton:MonoBehaviourPunCallbacks{publicButton joinedRoomIndicator;publicvoidOnButtonClick() { // Connect to the Photon master serverif (!PhotonNetwork.IsConnected) {PhotonNetwork.ConnectUsingSettings(); }else {TryJoinRoom(); } }publicoverridevoidOnConnectedToMaster() {Debug.Log("Connected to Photon master server");TryJoinRoom(); }privatevoidTryJoinRoom() { // Try to join the room "MyRoom"PhotonNetwork.JoinRoom("MyRoom"); }publicoverridevoidOnJoinedRoom() {Debug.Log("Joined room: "+PhotonNetwork.CurrentRoom.Name);joinedRoomIndicator.image.color=Color.green; }publicoverridevoidOnJoinRoomFailed(short returnCode,string message) {Debug.Log("Failed to join room"); // If we failed to join the room, it might not exist, so let's try to create itPhotonNetwork.CreateRoom("MyRoom"); }publicoverridevoidOnCreatedRoom() {Debug.Log("Created room: "+PhotonNetwork.CurrentRoom.Name); }publicoverridevoidOnCreateRoomFailed(short returnCode,string message) {Debug.Log("Failed to create room"); }}