newbie-at-cuhksz / virtual-campus-v2

5 stars 4 forks source link

好友系统功能完善 & 私聊功能UI完善 & 私聊功能UI屏幕适配 #12

Open Chen-Gary opened 3 years ago

Chen-Gary commented 3 years ago

需完善的功能

  1. 红框部分为我添加的UI组件:一个Scroll Panel、一个InputField、一个Button 这三个组件被包在了Private Chat Panel中 他们需要UI样式的调整屏幕比例适配(现在build出来UI位置会飘) image

  2. 在点击左侧按钮、选择聊天对象后,可能需要对应按钮变色以提示玩家

    或者类似微信在聊天窗上方显示聊天对象的nickname

    请注意以下可能有用的接口:

    GameObject Private Chat Send Button上附有component PrivateChatSendButton.cs,这个component中维护了

    public string privateChatTarget = "";

    这个field记录了玩家目前的聊天对象,会随着玩家选择的聊天对象变化而变化,它的值为目标玩家nickname(后期可能变成nickname (uid)的形式)

  3. 好友系统与数据库联动

    请注意以下接口:

    Friend List Item.prefab(即图1左侧的好友按钮)上附有component FriendItemButton,这个component维护了好友item的昵称(+uid)

    public string NickName { get; set; }
    // public string Uid { get; set; }     // the uid field should be add later

    Friend List Item.prefab的instantiate请参考UIListView.cs

    List<string> textlist = new List<string>() { "chh", "hyy", "lyy", "lzh", "rz", "ct", "ynj", "cw" }; // 模拟:从数据库获取的该玩家的好友列表
    for(int i=0;i<textlist.Count;++i)
    {
       GameObject go = Instantiate(FriendItemPrefab) as GameObject;
    
       FriendItemButton friendItemButton = go.GetComponent<FriendItemButton>();
       friendItemButton.NickName = textlist[i];         // 将玩家NickName存储在FriendItemButton component中
       friendItemButton.UpdateNickNameUI();             // 在按钮上显示好友昵称
    
       go.transform.parent = content.transform;
       go.transform.localScale = new Vector3(1, 1, 1);
    }

    我没有对这边进行大修改,只有中间“在按钮上显示好友昵称”部分有改动

  4. *未读信息提示

    如果要实现这个功能,我需要以下接口:

    // 在玩家收到私聊信息时调用该函数,标记未读
    public void PrivateChatMarkUnread (string 玩家昵称_或_玩家昵称加uid)
    
    // 在玩家点击好友按钮时调用该函数,标记已读
    public void PrivateChatMarkRead ()