在写完上一篇文章后,发现了一个问题:

那就是编写的插件无法实时预览。

在学习了Slate之后,我找到了方法:

重写SynchronizeProperties函数

头文件中添加:

#if WITH_EDITOR
UFUNCTION()
virtual void SynchronizeProperties() override;
#endif

因为只需要在编辑器中运行,所以加上了#if WITH_EDITOR

cpp文件中添加:

#if WITH_EDITOR
void UMiniMap::SynchronizeProperties()
{
Super::SynchronizeProperties();
WidgetSize = ;
MapTextureSize = ;
//构建组件
MainMap = NewObject<UImage>(this, TEXT("MainMap"));
PlayerCursor = NewObject<UImage>(this, TEXT("PlayerCursor"));
Frame = NewObject<UImage>(this, TEXT("Frame"));
//往Widget容器中加入组件
RootPanel = Cast<UCanvasPanel>(WidgetTree->RootWidget);
if (RootPanel)
{
RootPanel->AddChild(MainMap);
RootPanel->AddChild(PlayerCursor);
RootPanel->AddChild(Frame);
}
UMaterialInstance *MainMapMaterialInstance = LoadObject<UMaterialInstance>(NULL, TEXT("/Game/UI/Images/MiniMapMaterial_Instance"), NULL, LOAD_None, NULL);
if (MainMapMaterialInstance)
{
MainMapMaterial = UKismetMaterialLibrary::CreateDynamicMaterialInstance(GetWorld(), MainMapMaterialInstance);
if (MainMapMaterial->Parent->GetMaterial()->MaterialDomain == MD_UI)
{
UWidgetLayoutLibrary::SlotAsCanvasSlot(MainMap)->SetSize(FVector2D(WidgetSize, WidgetSize));
MainMap->SetBrushFromMaterial(MainMapMaterial);
MainMapMaterial->SetScalarParameterValue(FName(TEXT("MiniMapScaleRatio")), (float)WidgetSize / MapTextureSize);
}
}
UTexture2D* PlayerCursorTexture = LoadObject<UTexture2D>(NULL, TEXT("/Game/UI/Images/PlayerCursor"), NULL, LOAD_None, NULL);
if (PlayerCursorTexture)
{
UWidgetLayoutLibrary::SlotAsCanvasSlot(PlayerCursor)->SetSize(FVector2D(PlayerCursorTexture->GetSizeX(), PlayerCursorTexture->GetSizeY()));
PlayerCursorSize = PlayerCursorTexture->GetSizeX();
UWidgetLayoutLibrary::SlotAsCanvasSlot(PlayerCursor)->SetPosition(FVector2D(-PlayerCursorSize / + WidgetSize / , -PlayerCursorSize / + WidgetSize / ));
PlayerCursor->SetBrushFromTexture(PlayerCursorTexture);
}
if (SetImageBurshFromMaterial(TEXT("/Game/UI/Images/FrameMaterial"), Frame, FVector2D(WidgetSize, WidgetSize)))
{
UWidgetLayoutLibrary::SlotAsCanvasSlot(Frame)->SetSize(FVector2D(WidgetSize, WidgetSize));
}
//后面可以考虑加入别的按钮以及边框
}
#endif

不过这样还有有一点小问题,在新建的蓝图(继承这个类的蓝图)中狂点,引擎会直接崩掉,目前找不到解决方案,引擎里都是用Slate的,论坛和AnswerHUB也都没有相关资料,不过这个问题不影响使用,所以教程到此为止了。

对《分享一下自己用c++写的小地图》一文的补充的更多相关文章

  1. 分享一下自己用c++写的小地图

    http://www.unrealchina.com/forum.php?mod=viewthread&tid=451&extra=&from=portal&page= ...

  2. 如何优雅的写一篇安利文-以Sugar ORM为例

    前言 我最近喜欢把写的十分优美的技术文章叫做安利文.首先,文章必须是原创而非软广:其次,阅读之后不仅能快速吸纳技术要点并入门开发,还能感同身受的体会作者热情洋溢的赞美和急于分享心得体验的心情,让人感觉 ...

  3. Docz 用 MDX 写 React UI 组件文档

    Docz 用 MDX 写 React UI 组件文档 前言 为了提升开发效率,创建一套 UI 组件库是一种较为有效的方式之一:可以减少重复工作.提高可复用,所以现在越来越多团队开始创建自己的 UI 组 ...

  4. 如何基于WPF写一款数据库文档管理工具(二)

    系列目录 基于WPF重复造轮子,写一款数据库文档管理工具(一) 本篇重点 上次发表了基于WPF重复造轮子,写一款数据库文档管理工具(一) 得到不少人支持,文章一度上到了博客园推荐表首页,看来大家对这个 ...

  5. 分享一个很早之前写的小工具DtSpyPlus

    几年前写的一个获取windows窗体基本信息和屏幕取色的小工具 ,一直在用. 下载地址 http://files.cnblogs.com/dint/SpyPlus.zip

  6. 【原创】大叔问题定位分享(16)spark写数据到hive外部表报错ClassCastException: org.apache.hadoop.hive.hbase.HiveHBaseTableOutputFormat cannot be cast to org.apache.hadoop.hive.ql.io.HiveOutputFormat

    spark 2.1.1 spark在写数据到hive外部表(底层数据在hbase中)时会报错 Caused by: java.lang.ClassCastException: org.apache.h ...

  7. 【转】分享一份C语言写的简历

    个人观点:文章想法很棒,作者的编码风格也很赞,可以从中学到不少东西.转载的文章是我都用心看过的,而且希望后续再可以回过头看的文章,努力让自己的能力越来越强,加油 这里黑客新闻吗?作者用代码更新了自己的 ...

  8. 【原创】大叔问题定位分享(15)spark写parquet数据报错ParquetEncodingException: empty fields are illegal, the field should be ommited completely instead

    spark 2.1.1 spark里执行sql报错 insert overwrite table test_parquet_table select * from dummy 报错如下: org.ap ...

  9. 分享一篇最近新写的jquery注册页面表单校验的程序,仅供参考

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

随机推荐

  1. 转载:Centos7 从零编译Nginx+PHP+MySql 二

    序言 这次玩次狠得.除了编译器使用yum安装,其他全部手动编译.哼~ 看似就Nginx.PHP.MySql三个东东,但是它们太尼玛依赖别人了. 没办法,想用它们就得老老实实给它们提供想要的东西. 首先 ...

  2. Git 如何只更新项目中某个目录里的文件

    Git由于在远端和本地都有一个代码库, 这样更新单个文件比SVN要麻烦一点.   1. 如果想拿远端git服务器上的最新版本(或某个特定版本)覆盖本地的修改,可以使用git pull命令,   但这会 ...

  3. 获取Unity3D虚拟摄像机的图像

    最新博客地址已转到: http://blog.csdn.net/zzlyw?viewmode=contents   ------------------------------------------ ...

  4. bzoj4237 稻草人

    我是萌萌的传送门 题意不难理解吧-- 一开始看到这道题的时候lrd告诉我这题要分治,还给我讲了讲分治要怎么写,好像是CDQ+树状数组来着--(好吧我已经忘了--)然而我第一眼看完题之后的思路是数据结构 ...

  5. Ajax发送POST请求SpringMVC页面跳转失败

    问题描述:因为使用的是SpringMVC框架,所以想使用ModelAndView进行页面跳转.思路是发送POST请求,然后controller层中直接返回相应ModelAndView,但是这种方法不可 ...

  6. erlang 虚机CPU 占用高排查

    -问题起因 近期线上一组服务中,个别节点服务器CPU使用率很低,只有其他1/4.排除业务不均,曾怀疑是系统top统计错误,从Erlang调度器的利用率调查 找到通过erlang:statistics( ...

  7. python中单引号, 双引号,三引号的差异

    1. 单引号和双引号用法都是一样的,但是如果字符串里有相同的字符时要使用\进行转义 举例:1) print 'hello'2) print "hello"1和2,结果都是hello ...

  8. tomcat7 IP限制配置

    server.xml  </Host>前添加<Valve className="org.apache.catalina.valves.RemoteAddrValve&quo ...

  9. Glassfish在SpringMVC服务端接收请求时字符出现乱码的解决办法

    环境描述 前端:jsp 后端:SpringMVC Controller 尽管jsp页面已设置了pageEncoding: <%@page contentType="text/html& ...

  10. 阿里云直播PHP SDK如何使用

    前一篇聊了聊关于阿里云直播,如何进行进行调试,ok,那这篇我们就聊一聊关于阿里云直播的SDK(当然是关于PHP的),基于下面的原因: 1.直播云没有单独的SDK,直播部分的SDK是直接封装在CDN的相 ...