• 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 = "
      " + "<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)
  • 相关阅读:
    Javascript构造函数的继承
    什么数据库能抗住《王者荣耀》的1亿DAU?
    支持微信支付亿级请求的TBase数据库大揭秘
    我在MySQL的那些年(一)
    谁是银行核心数据库的破局者?
    X侦探所事件薄 | 一次内存溢出之谜
    腾讯云数据库新生代产品获国家级认证
    POJ 2594 传递闭包的最小路径覆盖
    POJ 1719 二分图最大匹配(记录路径)
    HDU 1533 KM算法(权值最小的最佳匹配)
  • 原文地址:https://www.cnblogs.com/wgslucky/p/11795437.html
Copyright © 2020-2023  润新知