kbengine聊天廣播的簡單實現方法

建議再好好補充一下相關知識,你舉的例子也挺亂的:lol

       KBEngine.Event.registerOut("sendMessagetoOtherClients",this,"sendMessagetoOtherClients")
       KBEngine.Event.registerOut("ReceiveMessage",this,"ReceiveMessage")
既然你能創造出2個事件來,怎麼會不知道應該由誰去監聽呢? 一般應該是你的當前角色實體監聽既“Avatar.cs"監聽事件後將信息發往服務器, 服務器再去做廣播。

另外你不需要實現scripts\client中的內容,參考:https://github.com/kbengine/kben ... e_scripts/README.md

幫你梳理一下:
【客戶端】
1: 在UI.cs註冊聊天信息接收事件
KBEngine.Event.registerOut("ReceiveChatMessage",this,"ReceiveChatMessage")
並實現這個方法
void ReceiveChatMessage(string msg):
     // 服務器下發了聊天信息,這裏顯示信息到聊天窗口

2:在UI.cs實現發送聊天信息函數
    void sendChatMessage(string msg):
              // 向KBE插件觸發一個信息發送事件
            KBEngine.Event.fireIn("sendChatMessage", msg)

3: KBE插件層需要監聽到信息發送事件
   由於發送者只能是你的當前角色, 而demo中當前角色實體腳本名稱爲Avatar.cs,因此我們在這裏監聽發送信息事件

     public class Avatar : KBEngine.GameObject   
    {
       // 安裝事件
        void installEvents()
        {
            // 只有你當前客戶端這個角色需要註冊,其他服務端同步過來的角色不需要監聽這個事件
            if(isPlayer())
                  KBEngine.Event.registerIn("sendChatMessage",this,"sendChatMessage")
         }

         void sendChatMessage(msg)
         {
             // 向服務端發送聊天信息, 只需要發給baseapp就好了,到cellapp作用不大
              baseCall("sendChatMessage", msg);
         }

         void ReceiveChatMessage(msg)
         {
              // 服務端下發了聊天信息,這裏觸發一個事件交給UI層顯示
             KBEngine.Event.registerIn("ReceiveChatMessage",this,"ReceiveChatMessage")
          }
        其他省略
        ...
        ...
     }

【服務端】
1: Avatar.def 聲明暴露給客戶端調用的方法
<BaseMethods>
      <sendChatMessage>
        msg...
       </sendChatMessage>
</BaseMethods>
<ClientMethods>
      <ReceiveChatMessage>
        msg...
       </ReceiveChatMessage>
</ClientMethods>

2: base\Avatar.py實現聊天發送方法(注意:這裏只是簡單實現,將信息廣播給當前baseapp進程上的所有玩家,測試時不要開多個baseapp, 要做世界廣播還應該考慮服務端上開了多個baseapp,那麼需要將消息首先廣播到所有的baseapp上,每個baseapp上再執行如下流程就行了)
def sendChatMessage(msg):
     for player in KBEngine.entities.values():
            if player.__class_.__name__ == "Avatar":
                     player.client.ReceiveChatMessage(msg)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章