参考的前辈大佬们的文章
正文
创建一个新的UE4插件/模块
- 创建插件:在项目中点击Plugin并创建一个新的空白插件,这个不再追谁
- 创建模块:如果你想把这个功能合并到某个插件,可以选择创建模块,创建新的模块文件、.build.cs、与模块名称相同的.h与.cpp文件放置在目标插件或项目的source文件下,最简单的方法是直接复制一个空白插件的模块,并更改名称类名等统一。
注意,模块需要在uplugin或uproject文件中注册,我将其填写 为runtiome类型,加载时间为默认。
添加xml文件
- 创建xml文件并放置在build文件目录的同级位置,并将名称改为xxx_UPL,所有复制文件链接java类库的操作都在这个xml中实现,我的建议是在复制一份引擎插件AndroidCamera中的xml文件,其中已经实现好了各种标签。
2.在build.cs中注册该文件,加载launch模块,并添加同路径下的UPL文件
添加JAVA代码
APL写法参考了这篇
- 因为我们这个功能很简单,不需要link库,所以只用到了 gameActivityImportAdditions与gameActivityClassAdditions这两个标签,前者用于引入包含文件,后者用来添加函数。
- 我添加了两个函数,一个用于Java调用C++,一个用于C++调用Java子线程进行解压缩并回调,这里我遇到了一些问题,我看到某教程的课程名显示Java可以调用C++的类成员函数,我并没有找到方法(教程好贵舍不得花钱),我这里只是调用了类外函数,并且暂时是准备用一个单例接受回调实现功能了。
<!-- imports -->
<gameActivityImportAdditions>
<insert>
import java.io.*;
import java.util.ArrayList;
import android.os.AsyncTask;
import java.util.Collection;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;
import java.util.zip.ZipInputStream;
</insert>
</gameActivityImportAdditions>
<!-- Action -->
<gameActivityClassAdditions>
<insert>
<!-- 01 -->
<!<