蓝图函数库的功能非常强劲,如果在项目中使用的话有时能达到事半功倍的效果。

蓝图函数库,Blueprint Function Library。可以非常方便的将代码中的函数暴露给所有的蓝图使用,同时也提供了很好的代码复用性。完成的蓝图函数库可以非常轻易的在其他项目中使用或者共享给其他人。由于在函数库中定义的所有函数都能在其他的蓝图中访问,可以说是和单例模式的C++代码接合的天然素材。也可以防止为了定义一些泛用的函数而频繁的使用接口继承。

使用起来也是非常的简单明了。类似下面的代码就可以完成一个蓝图函数库了。

#pragma once

#include "CoBpFuncLib.generated.h"

/** Blueprintable并不是必须的 */
UCLASS(Blueprintable)
class UCoBpFuncLib : public UBlueprintFunctionLibrary
{
GENERATED_UCLASS_BODY() public:
/** <测试函数组 */
UFUNCTION(BlueprintCallable, Category = "UCoBpFuncLib")
static int32 GetHp(); UFUNCTION(BlueprintCallable, Category = "UCoBpFuncLib")
static void AddHp(int32 Val);
};

上面的是头文件,如果没有打算在蓝图中继承这个函数库的话可以选择去掉这个声明。

#include "CoBpFuncLib.h"
#include "LogicMisc/StateCenter.h" //////////////////////////////////////////////////////////////////////////
// UCoBpFuncLib UCoBpFuncLib::UCoBpFuncLib(const class FObjectInitializer& PCIP)
: Super(PCIP)
{ } int32 UCoBpFuncLib::GetHp()
{
return StateCenter::sharedStateCenter()->miPlayerHp;
} void UCoBpFuncLib::AddHp(int32 Val)
{
StateCenter::sharedStateCenter()->miPlayerHp += Val;
}

上面的代码实现通过访问存储有miPlayerHp的单例来进行HP的访问和调整。编译后运行,随便打开一个蓝图都能访问到这两个函数。注意,上面代码中并没有给出StateCenter的定义,如果有想要直接尝试的童鞋请去掉相关的代码。

有了蓝图函数库,我们在进行游戏逻辑设计时就又多了很多选择。

[UE4]蓝图函数库小结的更多相关文章

  1. [UE4]蓝图函数库

    在任何蓝图上都可以调用“蓝图函数库”的方法

  2. [UE4]C++调用蓝图函数:BlueprintImplementableEvent函数说明符用法

    用BlueprintImplementableEvent标明的函数在C++代码中不需要有方法体,方法体在蓝图中实现. 用法: 1,现在C++头文件中定义函数名 UFUNCTION(BlueprintI ...

  3. UNIX高级环境编程(6)标准IO函数库 - 流的概念和操作

    标准IO函数库隐藏了buffer大小和分配的细节,使得我们可以不用关心预分配的内存大小是否正确的问题. 虽然这使得这个函数库很容易用,但是如果我们对函数的原理不熟悉的话,也容易遇到很多问题.   1 ...

  4. UE4蓝图与C++交互——射击游戏中多武器系统的实现

    回顾   学习UE4已有近2周的时间,跟着数天学院"UE4游戏开发"课程的学习,已经完成了UE4蓝图方面比较基础性的学习.通过UE4蓝图的开发,我实现了类似CS的单人版射击游戏,效 ...

  5. 菜鸟Python学习笔记第一天:关于一些函数库的使用

    2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...

  6. ABP(现代ASP.NET样板开发框架)系列之21、ABP展现层——Javascript函数库

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之21.ABP展现层——Javascript函数库 ABP是“ASP.NET Boilerplate Project ...

  7. 重温JSP学习笔记--El函数库

    EL函数库(由JSTL提供的) * 导入标签库:<%@ tablib prefix="fn" uri="http://java.sun.com/jsp/jstl/f ...

  8. 为开发者准备的 Android 函数库(2016 年版)

    转载:http://www.androidchina.net/5922.html第三方函数库(译者注:包括第三方提供的 SDK,开源函数库)以惊人的方式助力着 Android 开发,借助这些其他开发人 ...

  9. 如何持续集成/交付一个开源.NET函数库到Nuget.org

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:这是一个简单的入门向导,涉及到GitHub.AppVeyor和Nuget.org. 最 ...

随机推荐

  1. Flappy Bird背后的故事

    更多有价值的互联网文章:晓煦分享(http://www.ihuxu.com/share) 由越南游戏工程师阮哈东(Nguyen Ha Dong)开发的Flappy Bird这款游戏,画面不算精致且看起 ...

  2. iOS项目实现SVN代码管理方法③(Part 三)

    内容中包含 base64string 图片造成字符过多,拒绝显示

  3. Java实现交换两个String

    在Java中我们所使用的实例变量其实都是一个引用,所以如果要求实现一个swap(String A, String B)这种函数时无法实现的,因为在类方法的定义中是先对行参进行地址传递,然后对形参修改, ...

  4. Myecilpse web +tomcat 项目: JSP在mysql中创建表

    <%@ page language="java" import="java.util.*" import="com.mysql.jdbc.Dri ...

  5. Dockerfile构建mysql数据库

    dockerfile文件: FROM centos:centos6  MAINTAINER admin "admin@topsec.com.cn"    RUN yum insta ...

  6. 如何修改magento产品详细页面的栏目

    magento默认模板里面的产品信息页面的布局是以两栏带右侧栏显示的,那么如何修改为两栏带左侧栏或者三栏.一栏的方式显示呢?下面教大家一种很简单的方法就可以实现.下面是默认的布局预览:

  7. liunx网络基本命令

    1.ifconfig 查看本机的ip或者网关 更改本机的ip地址 2.sudo reboot    重启 跟 sudo shutdown -r new  是一样的意思

  8. CH3602 Counting Swaps

    题意 3602 Counting Swaps 0x30「数学知识」例题 背景 https://ipsc.ksp.sk/2016/real/problems/c.html Just like yeste ...

  9. git操命令&&node操作命令

    1:删除远程库中的分支(现在本地删除该分支) git push origin --delete trunk分支 2:初始化一个新的工程 jdf install init xxx 3:编译好代码后,交给 ...

  10. 推荐 Laravel API 项目必须使用的 8 个扩展包

    如今在现代网络开发中,比较流行的模式是基于 API 开发,可以通过手机或网站来创建服务. Laravel 是创建基于 API 的项目的最佳框架之一,它为世界各地的大型社区提供了高速开发. Larave ...