依赖编译_[UE4]无插件源码编译和打包工程:为多个有依赖关系的plugin生成预编译的链接库...

本文介绍了如何在UE4中无插件源码编译和打包工程,详细步骤包括创建插件、处理插件间的依赖、设置白名单、打包及删除源码,以保护代码不被泄漏或实现不同版本销售。
摘要由CSDN通过智能技术生成

封面来源:顽皮狗美术总监John Sweeney个人作品https://gumroad.com/l/VqjIjt

无插件源码编译打包工程的意义:比如,既能将UE4插件给客户正常使用,又能保护代码不被泄漏(曾经我的一个下属把我在公司写的代码和工具放到公网上当作自己的个人作品去光子面试);或者你开发了一个UE4插件放在商城中售卖,希望将有源码版本和无源码版本分开销售(UE4商城有不少牛鼻的插件,但是价格动辄200刀,让一些不需要源码的用户望而却步)。
常规的C++工程只需要编一个链接库就可以达到以上目的,但是UE4 plugin的编译规则有点麻烦,而且UE4的plugin系统有些设计缺陷导致编译步骤有不少坑(比如:不同原因导致的链接错误,UE4控制台只会报同一个错误,且只有简单文本提示);另外对于多个有依赖关系的plugin如何实现无源码编译打包,官方也没相关文档。

1,新建两个插件 (Edit -> Plugins -> New Plugin) 并命令为P1P2.

9a973562196da9444dc90630b1acc7a6.gif

2,为 P1P2添加测试代码(这些代码有跨越插件的依赖关系)

51d495111e87c946dc5e08773bcb9a5d.gif

我们假设 Actor1P1中, Actor2P2中, P2 依赖于 P1, 但是 P1 并不依赖于P2

Actor1.h

#include "Actor1.h"
#include "Engine.h"

// Sets default values
AActor1::AActor1()
{
    
    // Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
    PrimaryActorTick.bCanEverTick = true;

}

// Called when the game starts or when spawned
void AActor1::BeginPlay()
{
    
    Super::BeginPlay();
    
    GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Yellow, FString("Actor1 BeginPlay"));
}

Actor2.h

#include "Actor2.h"
#include "Engine/Engine.h"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值