यूनिटी PUN 2 रूम में मल्टीप्लेयर चैट जोड़ रही है

इस ट्यूटोरियल में, मैं दिखाऊंगा कि RPCs (रिमोट प्रोसीजर कॉल्स) का उपयोग करके PUN 2 में रूम चैट कैसे जोड़ें।

तो चलिए शुरू करते हैं!

भाग 1: PUN 2 और मल्टीप्लेयर उदाहरण सेट करना

PUN 2 के साथ मल्टीप्लेयर उदाहरण कैसे सेट करें, इस पर हमारे पास पहले से ही एक ट्यूटोरियल है, नीचे दिए गए लिंक को देखें:

PUN 2 का उपयोग करके Unity 3D में एक मल्टीप्लेयर गेम बनाएं

मल्टीप्लेयर प्रोजेक्ट सेट अप करने के बाद वापस आएँ ताकि हम जारी रख सकें।

वैकल्पिक रूप से, आप स्रोत प्रोजेक्ट को सीधे डाउनलोड कर सकते हैं।

भाग 2: मल्टीप्लेयर चैट जोड़ना

  • एक नई स्क्रिप्ट बनाएं, इसे PUN2_Chat कहें और फिर नीचे दिए गए कोड को इसके अंदर पेस्ट करें:

PUN2_Chat.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Photon.Pun;
using Photon.Realtime;

public class PUN2_Chat : MonoBehaviourPun
{
    bool isChatting = false;
    string chatInput = "";

    [System.Serializable]
    public class ChatMessage
    {
        public string sender = "";
        public string message = "";
        public float timer = 0;
    }

    List<ChatMessage> chatMessages = new List<ChatMessage>();

    // Start is called before the first frame update
    void Start()
    {
        //Initialize Photon View
        if(gameObject.GetComponent<PhotonView>() == null)
        {
            PhotonView photonView = gameObject.AddComponent<PhotonView>();
            photonView.ViewID = 1;
        }
        else
        {
            photonView.ViewID = 1;
        }
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyUp(KeyCode.T) && !isChatting)
        {
            isChatting = true;
            chatInput = "";
        }

        //Hide messages after timer is expired
        for (int i = 0; i < chatMessages.Count; i++)
        {
            if (chatMessages[i].timer > 0)
            {
                chatMessages[i].timer -= Time.deltaTime;
            }
        }
    }

    void OnGUI()
    {
        if (!isChatting)
        {
            GUI.Label(new Rect(5, Screen.height - 25, 200, 25), "Press 'T' to chat");
        }
        else
        {
            if (Event.current.type == EventType.KeyDown && Event.current.keyCode == KeyCode.Return)
            {
                isChatting = false;
                if(chatInput.Replace(" ", "") != "")
                {
                    //Send message
                    photonView.RPC("SendChat", RpcTarget.All, PhotonNetwork.LocalPlayer, chatInput);
                }
                chatInput = "";
            }

            GUI.SetNextControlName("ChatField");
            GUI.Label(new Rect(5, Screen.height - 25, 200, 25), "Say:");
            GUIStyle inputStyle = GUI.skin.GetStyle("box");
            inputStyle.alignment = TextAnchor.MiddleLeft;
            chatInput = GUI.TextField(new Rect(10 + 25, Screen.height - 27, 400, 22), chatInput, 60, inputStyle);

            GUI.FocusControl("ChatField");
        }
        
        //Show messages
        for(int i = 0; i < chatMessages.Count; i++)
        {
            if(chatMessages[i].timer > 0 || isChatting)
            {
                GUI.Label(new Rect(5, Screen.height - 50 - 25 * i, 500, 25), chatMessages[i].sender + ": " + chatMessages[i].message);
            }
        } 
    }

    [PunRPC]
    void SendChat(Player sender, string message)
    {
        ChatMessage m = new ChatMessage();
        m.sender = sender.NickName;
        m.message = message;
        m.timer = 15.0f;

        chatMessages.Insert(0, m);
        if(chatMessages.Count > 8)
        {
            chatMessages.RemoveAt(chatMessages.Count - 1);
        }
    }
}

यदि आपने हमारे PUN 2 ट्यूटोरियल का अनुसरण किया है तो अब आपके पास 2 दृश्य "GameLobby" और होंगे "GameLevel"

  • "GameLevel" दृश्य खोलें, फिर PUN2_Chat को _RoomController ऑब्जेक्ट से जोड़ें, फिर दृश्य सहेजें
  • "GameLobby" दृश्य खोलें, फिर एक नया कक्ष बनाएं, अब आपको दबाकर चैट करने में सक्षम होना चाहिए "T"

लिंक
Unity 6