Unity3d 制作聊天記錄列表框


在使用Unity3d開發一個簡易的聊天程序時,需要在客戶端顯示聊天記錄列表,做為一個初學者,開發這個功能具然快用了兩天了。最后通過調一個參數解決了。這里記錄一下,希望對新手有所幫助。
最終的顯示效果是這樣的:

項目結構如圖所示:

項目中的StartPanel是用來輸入昵稱和連接服務器用的,這里先不用管它。ChatPanel中實現了聊天歷史列表記錄和聊天消息的發送。
開發步驟如下所示:

  1. 添加ChatPanel,做為聊天內容管理的Panel界面。

  2. 在ChatPanel下面添加聊天信息輸入框ChatInputField

  3. 在ChatPanel下面添加一個Scroll View ,它的參數面板如下所示:

  4. 給Scroll View->Viewport->Content添加Content Size Filter和Vertical Layout Group,參數如下所示:

  5. 然后添加如下腳本,這里的思路是每一條聊天記錄都會動態加載到一個Text組件中,這方便處理不同組件顯示的內容。

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Return) || Input.GetKeyDown(KeyCode.KeypadEnter))
        {
            if (chatInput.text != "")
            {
                string username = Player.GetInstance().NickName;
                string addText = "\n  " + "<color=red>" + username + "</color>: " + chatInput.text;
                GameObject textShowPanel = showPannel.gameObject;
                GameObject chatTextArea = (GameObject)Instantiate(Resources.Load("ChatTextArea"));
                chatTextArea.transform.SetParent(textShowPanel.transform, false);
                
                Text text = chatTextArea.GetComponent<Text>();
                text.text = addText;
                chatInput.text = "";
                chatInput.ActivateInputField();
                //強制更新,如果滾動條顯示了,讓滾動條始終在最低下。
                Canvas.ForceUpdateCanvases();
                scrollRect.verticalNormalizedPosition = 0f;
                Canvas.ForceUpdateCanvases();
            }
        }
    }

關注下面的公眾號,獲取源碼 ![](https://img2018.cnblogs.com/blog/562410/201911/562410-20191104223532022-1391810103.png)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM