使用KBEngine开发UE4服务端——开发详解

使用KBEngine开发UE4服务端——开发详解

1. 简述
开始正式进入开发,网络上关于开发和修改文件的文章较少,这里会记录自己开发过程中需要更改的地方和一些流程。

2. 前期的配置说明
根据前文配置过后,在kbengine文件夹下,双击new_assets.bat生成一个新的资产库作为这里开发使用的资产库,生成的文件夹名字随意。
这里更改KBE提供默认的Account, 在{项目资产库}/res/server/kbengine.xml中:
添加:

<accountEntityScriptType>Consumer</accountEntityScriptType>

如下图所示:使用KBEngine开发UE4服务端——开发详解_第1张图片
在/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文件不见了,多了自己新添加的
    使用KBEngine开发UE4服务端——开发详解_第2张图片

在工程文件\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;

	}
}

这里实现了整体简单的框架。

你可能感兴趣的:(UE4,kbengine)