美文网首页
一个简单 小型的C#Socket网络通信库 聊天室示例(五)

一个简单 小型的C#Socket网络通信库 聊天室示例(五)

作者: 懒_开果 | 来源:发表于2019-08-27 11:37 被阅读0次

    讲完了 聊天消息了 下面说两个主界面 还有工具类

    这里懒得再转****Sprite直接用RawImage了 他可以放Texture2D

    登录界面 LoginPanel

    登录界面.png

    应该没啥说的 就建这几个组件

    代码:

    using UnityEngine;
    using UnityEngine.UI;
    
    public class LoginPanel : MonoBehaviour 
    {
    
        public InputField NameInput;
    
        public RawImage PlayerHead;
    
        public Button LoginBtn;
    
        public Button SelectHeadBtn;
    
    }
    
    

    聊天界面ChatPanel

    聊天界面.png

    每个聊天消息框都是由SpawnDialogUI这个函数进行创建的 创建完要下拉最下面消息框嘛 所以要更改Content的位置进行下拉操作

    代码:

    using UnityEngine;
    using UnityEngine.UI;
    
    public class ChatPanel : MonoBehaviour 
    {
        public Button SendChatBtn;
    
        public RawImage HeadImg;
    
        public Text PlayerNameTxt;
    
        public RectTransform DialogParent;
    
        public DialogUI DialogUIPrefab;
    
        public InputField chatInput;
    
        /// <summary>
        /// 生成对话框  懒得写枚举了。用int吧  0我方 其他对方
        /// </summary>
        /// <param name="i"></param>
        /// <returns></returns>
        public DialogUI SpawnDialogUI(string playername, string info,Texture2D  head, int i=0)
        {
    
            DialogUI dialogUI;
            if (i==0)
            {
                 dialogUI = Instantiate(DialogUIPrefab, DialogParent.transform).InitLocalDialog(playername, info, head);
            }
            else
            {
                dialogUI = Instantiate(DialogUIPrefab, DialogParent.transform).InitDialog(playername, info, head);
            }
            //下拉对话框 上面应该会延时 所以这里也需要延时
           Invoke("HaulDown",0.02f);
    
            return dialogUI;
    
        }
    
        public void HaulDown()
        {
            DialogParent.anchoredPosition = new Vector2(DialogParent.anchoredPosition.x, DialogParent.sizeDelta.y);
        }
    }[/mw_shl_code] 
    
    **工具拓展类 ****ImageExtension**
    
    ByteToTexture 就是Byte转成Texture2D图片
    LoadImage 是RawImage 加载Byte[]数据的图片
    
    **代码:**[mw_shl_code=csharp,false]using System.IO;
    using UnityEngine;
    using UnityEngine.UI;
    
    public static class ImageExtension  
    {
        public static void LoadImage(this RawImage rawImage,byte[] data,int Width=200,int Height=200)
        {
            Texture2D texture2D = new Texture2D(Width, Height);
            texture2D.LoadImage(data);
            rawImage.texture = texture2D;
    
        }
    
        public static Texture2D ByteToTexture(this byte[] data, int Width = 200, int Height = 200)
        {
            Texture2D texture2D = new Texture2D(Width, Height);
            texture2D.LoadImage(data);
            return texture2D;
    
        }
    
        /// <summary>
        /// 路劲图片文件转byte[]
        /// </summary>
        /// <param name="filename填写图片路径"></param>
        /// <returns></returns>
        public static byte[] GetPictureBytes(this string filename)
        {
            FileInfo fileInfo = new FileInfo(filename);
            byte[] buffer = new byte[fileInfo.Length];
            using (FileStream stream = fileInfo.OpenRead())
            {
                stream.Read(buffer, 0, buffer.Length);
            }
            return buffer;
        }
    
    }
    

    好了我们下篇最后一篇继续 基本功能都写在了GameRoot那 =。=

    https://github.com/LKaiGuo/KGScriptGenerator 喜欢的给我点个星星啊
    u3d萌新QQ群844087555 欢迎进来灌水=。=

    相关文章

      网友评论

          本文标题:一个简单 小型的C#Socket网络通信库 聊天室示例(五)

          本文链接:https://www.haomeiwen.com/subject/lvwsectx.html