zoukankan      html  css  js  c++  java
  • 大神的Blog挂了,从Bing快照里复制过来的备份

    UWidget封装SWidgetUMG

    为了使用UMG中的一些高级或便利特性,需要将制作好的Slate控件封装UWidget中去。

    当前UE4版本4.8.3。

    将Slate封装UMG中去有很多的好处,因为在代码中对需要重用的控件进行不断的重新布局是一件非常繁琐的事情。同时,UMG也有在3D空间中进行显示这样的高级功能。

    由于UMG本身就是对Slate的封装,所以这个过程可以参照UE4的源代码进行研究。

    这里所做的是尝试对上一回所做的文件目录树进行封装

    直接上代码

    CListViewWidget.h

    封装类直接继承自UWidget即可,剩下的就是对UWidget中的函数进行实现。

    CListViewWidget.cpp

    在所有的函数中,RebuildWidget()是最重要的。

    参看UWidget的源代码可以发现,所有对被封装SWidget的引用都是通过这个函数获得的,因此在这里面写上SWidget对应的构造生成就可以了。

    OnBindingChanged函数是用于属性代理通知的,这里是简单的封装,没有提供属性代理,因此直接return也是可以的。

    在WITH_EDITOR宏中的是编辑器属性,用于封装后的UWidget在蓝图编辑器中显示。具体每一个函数的含义已经在注释中了。

    将上面的代码编译通过之后,就可以在UMG的编辑器中看到我们添加的控件了:

    image

    将CListViewWidget拖动控件蓝图上,并在HUD中展示此控件蓝图,就能在项目中与其他UMG控件一样使用了:

    image

    这样以来Slate的使用就会变得方便很多。

  • 相关阅读:
    笔记:Why don't you pull up a chair and give this lifestyle a try?
    使用 Git 来备份 MySQL 数据库
    FastAdmin 将 PHP 框架升级到 ThinkPHP 5.1
    javascript的冻结对象之freeze(),isFrozen()方法
    javascript的密封对象之seal(),isSealed()方法
    javascript的防篡改对象之preventExtensions()方法
    自己根据js的兼容封装了一个小小的js库
    关于跨浏览器的部分代码的封装
    jQuery 的noConflict()的使用.
    jQuery的get()用法
  • 原文地址:https://www.cnblogs.com/blueroses/p/5794531.html
Copyright © 2011-2022 走看看