講完了 聊天消息了 下面說兩個主界面 還有工具類
這里懶得再轉****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 歡迎進來灌水=。=