一個簡單 小型的C#Socket網絡通信庫 聊天室示例(五)

講完了 聊天消息了 下面說兩個主界面 還有工具類

這里懶得再轉****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 歡迎進來灌水=。=

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容