使用KBEngine開發UE4服務端——開發詳解

使用KBEngine開發UE4服務端——開發詳解

1. 簡述
開始正式進入開發,網絡上關於開發和修改文件的文章較少,這裏會記錄自己開發過程中需要更改的地方和一些流程。

2. 前期的配置說明
根據前文配置過後,在kbengine文件夾下,雙擊new_assets.bat生成一個新的資產庫作爲這裏開發使用的資產庫,生成的文件夾名字隨意。
這裏更改KBE提供默認的Account, 在{項目資產庫}/res/server/kbengine.xml中:
添加:

<accountEntityScriptType>Consumer</accountEntityScriptType>

如下圖所示:在這裏插入圖片描述
在/scripts/entities.xml裏修改Account爲Consumer如下:

<!-- <Avatar/> -->
	<Consumer hasClient="true"></Consumer><!-- <Account hasCell="true" hasBase="true" hasClient="true"></Account> -->
</root>

刪除/scripts/entity_defs/Account.def
並新建/scripts/entity_defs/Consumer.def
內容如下:

<root>
    <Properties>
    </Properties>

    <BaseMethods>
        <say>
            <Exposed/>
            <!--say的內容-->
            <Arg>   UNICODE         </Arg>
         </say>
    </BaseMethods>

    <CellMethods>
    </CellMethods>

    <ClientMethods>
        <onSay>     <!--回調函數,接受傳出去的say-->
            <Arg>   UNICODE         </Arg>
        </onSay>
    </ClientMethods>

</root>

刪除/scripts/base/Account.py
並新建/scripts/base/Consumer.py
內容如下:

# -*- coding: utf-8 -*-
import KBEngine
from KBEDebug import *


class Consumer(KBEngine.Proxy):
    def __init__(self):
        KBEngine.Proxy.__init__(self)

    def Say(self,Msg):
        """
        被客戶端調用說話方法
        :param Msg:說話內容
        """
        DEBUG_MSG("Consumer[%i] Say %s" %(self.id,Msg))
        BackMsg = Msg + "服務端發送"
        self.clients.OnSay(BackMsg)

這裏我們對源文件進行了更新,怎麼更新自己的UE4工程使其生效呢呢?很簡單,

  • 先關閉VS工程,
  • 在你的UE4工程目錄\Plugins\kbengine_ue4_plugins\Source\KBEnginePlugins下刪除Engine文件夾
  • 在你的資產庫下雙擊gensdk.bat,生成新的kbengine_ue4_plugins。
  • 把kbengine_ue4_plugins下\Source\KBEnginePlugins\Engine文件夾複製過去
  • 右鍵uproject工程,重新生成你的VS代碼即可!
  • 打開你的工程,是否發現原先Account文件不見了,多了自己新添加的
    在這裏插入圖片描述

在工程文件\Plugins\kbengine_ue4_plugins\Source\KBEnginePlugins\Scripts下新建2個Consumer.cpp Consumer.h,並在VS工程中添加,
//Consumer.cpp


#include "Consumer.h"
#include "Engine/Entity.h"
#include "Engine/KBEngine.h"
#include "Engine/KBDebug.h"
#include "LogicEvents.h"


KBEngine::Consumer::Consumer() :
	ConsumerBase()
{
}

KBEngine::Consumer::~Consumer()
{
}

void KBEngine::Consumer::__init__()
{
}

void KBEngine::Consumer::onDestroy()
{
	// 註銷該對象註冊的所有事件
	KBENGINE_DEREGISTER_ALL_EVENT();
}

void KBEngine::Consumer::OnSay(const FString & arg1)
{
}

//Consumer.h

#pragma once
#include "Engine/KBECommon.h"
#include "Engine/ConsumerBase.h"

namespace KBEngine
{

	class Consumer : public ConsumerBase
	{
	public:
		Consumer();
		virtual ~Consumer();

	public:
		virtual void __init__() override;

		virtual void onDestroy() override;

		virtual void OnSay(const FString& arg1) override;

	}
}

這裏實現了整體簡單的框架。

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