Blueprint —— 蓝图的使用(二)

目录

一,注释

二,组件窗口

Component Events and Functions

三,事件分发器

绑定和解绑定

四,事件

五,函数 

Specifiers

Pure

六,宏

七,数学表达式节点

可用的蓝图函数

基本结构体类型

操作符

八,随机流

随机流变量

随机流函数

Initial Seed

九,Timelines

时间轴节点

UTimelineComponent 

十,蓝图类型

十一,结构体变量

访问结构体信息

自定义结构体


一,注释

        注释 可直接添加到单个 蓝图 节点上, 也可注释框的形式添加到组相关节点上;

  • 节点注释,右击节点,选择 Node Comment 

  • 注释框,右击节点,选择 Create Comment from Selection

    • 快捷键C;

二,组件窗口

        组件是一个可以添加到Actor的功能,Actor可以使用组件提供的功能;组件必须附加到Actor上,不能单独存在;创建蓝图类实例时,Construction Script 在组件列表之后运行;

        Blueprint Editor 中的 Components 窗口允许将组件添加到蓝图;提供了以下方法:

  • 通过CapsuleComponent、BoxComponent或SphereComponent添加碰撞几何体;
  • 以StaticMeshComponent或SkeletalMeshComponent形式添加渲染几何体;
  • 使用MovementComponent控制移动;
  • 还可将组件指定给实例变量,以便在此蓝图或其他蓝图的图表中访问它们;

注,可将内容浏览器中的资产直接拖动到组件窗口;

Component Events and Functions

        可通过不同的方法将基于组件的事件和功能快速添加到蓝图的 事件图表 中;

 

三,事件分发器

        通过将一个或多个事件绑定到 Event Dispatcher,可在调用事件分发器时触发这些事件;这些事件可以绑定到蓝图类中,但事件分发器也允许在关卡蓝图中触发事件;

        向事件分发器添加输入,允许向绑定到事件分发器的每个事件发送变量;

绑定和解绑定

        使用 Bind Event 节点添加事件,使用 Unbind Event 节点移除事件(Unbind All Events节点解除当前所有事件);Bind Event 节点可以执行多次,但每个事件只能绑定一次;

  • 在蓝图类中执行 Unbind All Events 节点,将针对此类的所有实例来解除蓝图类和关卡蓝图中的事件绑定;
  • 在关卡蓝图中执行 Unbind All Events 节点,只会针对 Target 提供内容来解除蓝图类和关卡蓝图中的事件绑定;

四,事件

        事件(Events) 是从游戏代码中调用的节点, 在 事件图表(EventGraph)中开始执行单独的网络; 它们使蓝图执行一系列操作,对游戏中发生的特定事件(如游戏开始、关卡重置、受到伤害等)进行回应;

        这些事件可在蓝图中访问,以便实现新功能,或覆盖/扩充默认功能;任意数量的 Events 均可在单独 EventGraph 中使用,但每种类型只能使用一个;

        一个事件只能执行一个目标;如果想要从一个事件触发多个操作,需要将它们线性串联起来;

 

Blueprint —— Events_event anydamage没有了-CSDN博客

五,函数 

        Functions 是属于特定 Blueprint 的节点图表,可以从蓝图中的另一个图表执行或调用;

Specifiers

通过设置 访问说明符 来限制函数的访问;

  • Public,可任意访问,默认设置;
  • Protected,仅本身蓝图和派生蓝图可访问;
  • Private,仅本身蓝图可访问;

Pure

        纯函数不以任何方式修改状态或类的成员,而非纯函数可以自由修改状态;纯函数通常用于只输出数据值的getter函数或运算符;

 非纯函数必须通过将执行线连接到事件图表中的函数调用节点来显式执行;

  •  在UFUNCTION声明中指定 BlueprintCallable 关键字;
  • 对于通过 Blueprint Editor 添加的函数,不选中 Pure 复选框; 

纯函数连接到数据引脚,当需要数据时,编译器会自动执行它们;意味着,对于纯函数连接到的每个节点,纯函数将被调用一次;

  • 在函数声明中指定 BlueprintPure 关键字;
  • 对于通过 Blueprint Editor 添加的函数,选中 Pure 复选框;

        可在 Blueprint Class、Level Blueprint、Blueprint Interface 创建函数;创建并定义函数后,可在事件图表中调用;

  • 直接从 My Blueprint 选项卡拖动至 EventGraph 中的空白位置;
  • 在 EventGraph 中右击或从相应的执行或数据引脚中拖动以打开上下文菜单;
  • 只要引用了包含调用函数的蓝图,即可从外部调用函数;

六,宏

        Blueprint Macros 或 Macros 本质上与节点的折叠图相同;它们有一个由隧道节点指定的入口点和出口点;每个隧道都可以有任意数量的执行或数据引脚,当在其他蓝图和图表中使用时, 这些引脚在宏节点上可见;

  • 在 My Blueprint 选项卡中,单击宏列表标头上的 Add Button 创建宏;
  • 在 My Blueprint 选项卡中 右击 并选择 Macro 来创建蓝图宏;

     

七,数学表达式节点

        右击 图表并从关联菜单中选择 Add Math Expression... 以创建数学表达式节点;其像一个合并的图表,是一个独立的节点,可 双击 来打开构成其功能的子图表; 

      

  •  字母名称变为数学表达式上的变量、输入引脚,或者函数调用;
    • 如字母名称和Blueprint中的一个现有变量一样,那么它将变成一个变量获取节点 ;
    • 如字母名称后面有一个左括号(如 sin( 和 rand( ),那么它将会变成一个函数节点;
    • 如之前的两种情形都不符合,那么该字母名称会变成数学函数节点上的一个浮点型输入;
    • 如该名称匹配节点上现有引脚的名称,则还将被用于输入;
  • 数值常量将总是变成引脚输入,自身不会创建一个节点,但会使用它们来填充其他节点的输入文本域;
  • 数学运算符(像+ 、*、 -) 会变成函数节点;
可用的蓝图函数
  • 三角函数 (sin/cos/tan、asin、acos, 等);
  • 区间限定函数 (min, max, clamp,等);
  • 四舍五入函数 (floor, fceil, round等);
  • 指数函数(square, power, sqrt, loge, e/exp等);
sin(x)
clamp(y,0,20)
round(z)
基本结构体类型
  • vector 关键字生成一个MakeVector节点,别名vector, vec, vect;
  • rotator 关键字生成一个MakeRotator 节点,别名rotator, rot;
  • transform 关键字生成一个MakeTransform 节点;
vector(x,y,z)
rotator(x,y,z)
transform(vec(x,y,z), rot(p,y,r), vec(6,5,4))
操作符

支持的操作符:

  • 乘除法操作符,*, /, % ;
  • 加减法操作符,+, - ;
  • 关系操作符,<, >, <=, >=,==, != ;
  • 逻辑操作符,||, &&, ^ ;

目前不支持的操作符:

  • 条件操作符,?: ;
  • 位操作符,|, &, <<, >> ;
  • 一元前缀操作符,+, -, ++, --, ~, ! ;
  • 后缀操作符,++, --, [] ;

八,随机流

        RandomStreams 允许在蓝图、关卡蓝图及动画蓝图中重复地生成及应用随机数;当设置类似于散射物体或者构建程序化的场景时, 这是非常有用的;此时可能需要一种随机的效果,但是同时又想确保每次计算蓝图时产生一致的分布;之前,使用随机值会导致每次计算蓝图时产生不同的分布,这意味着当移动蓝图或者执行其它的导致需要重新计算图表的动作时,会产生完全不同的效果;通过使用随机流,可以基于一个种子值调整效果来获得期望的结果,然后在维持整体效果的过程中执行任何其他修改;

随机流变量

        RandomStreams 在蓝图中以一种特殊类型的结构体变量呈现;像其他变量一样,可以通过在 图表 模式中的 我的蓝图 面板中创建此类变量;

随机流函数

        随机流函数,可取入一个RandomStream作为输入,且根据函数功能不同输出一个不同类型的随机值;

Initial Seed

        初始种子属性用于计算随机值流,每次计算一个单独的随机种子所产生的随机值序列都将是一样的,这为我提供了前面提到的一致性;不同的种子生成不同的值序列;

九,Timelines

        Timeline 是蓝图中的特殊节点,允许快速设计出基于时间的动画效果,在时间轴上设置关键帧,触发 事件 ,或调整 浮点数向量 或 颜色

  • Play,从当前时间处开始正向播放;
  • Play from Start,从开始处正向播放;
  • Stop,在当前时间处停止播放;
  • Reverse,从当前时间处反向播放;
  • Reverse from End,从结尾开始反向播放;
  • Set New Time,将当前时间设置为新时间输入中的变量;
  • New Time,当调用Set New Time输入时,可跳转到该浮点值设置的时间处(秒为单位);

添加关键帧或曲线:

  • 右击灰色条并从下拉菜单中选择向 Add Key To CurveFloat 操作;
    • 快捷键:Shit + 左击;
  • 可从外部导入曲线,也可将内部设置的曲线导出(以便再次使用);
    • UCurveBase
UCLASS (BlueprintType, MinimalAPI)  
class UCurveFloat : public UCurveBase
时间轴节点

时间轴变量,可访问某时间轴的特定功能;

  • Get Play Rate,当前播放速率;

  • Get Playback Position,当前时刻的时间;

  • Get Timeline Length,时间轴的总长度;

  • Is Looping,时间轴是否循环;

  • Is Playing,时间轴是否在播放;

  • Is Reversing,时间轴是否反向播放;

  • Play,通知开始从当前播放位置处播放;

  • Play from Start,通知开始从时间轴的开始处播放;

  • Reverse,通知开始从当前播放位置处反向播放;

  • Reverse from End,通知开始从时间轴的开始处反向播放;

  • Set Looping,设置Looping属性;

  • Set New Time,设置New Time属性;

  • Set Play Rate,设置播放速率;

  • Set Playback Position,设置播放位置;

  • Set Timeline Length,设置时间轴的总播放长度;

  • Set Timeline Length Mode,设置Length Mode属性;

  • Stop,停止播放;

UTimelineComponent 

        UTimelineComponent 包含一系列的 events、 floatsvectors 或 colors 及其关联的关键帧;这些内容继承自UActorComponents;UTimelineComponents具有可以在原生代码中扩展的可靠方法;

//ExampleTimeline.h
/** 开始播放时间轴 */
UFUNCTION(BlueprintCallable, Category = "Components|Timeline")
ENGINE_API void Play();

/** 从头开始播放时间轴 */
UFUNCTION(BlueprintCallable, Category = "Components|Timeline")
ENGINE_API void PlayFromStart();

/** 开始反向播放时间轴 */
UFUNCTION(BlueprintCallable, Category = "Components|Timeline")
ENGINE_API void Reverse();

/** 从末尾开始反向播放时间轴 */
UFUNCTION(BlueprintCallable, Category = "Components|Timeline")
ENGINE_API void ReverseFromEnd();

/** 停止播放时间轴 */
UFUNCTION(BlueprintCallable, Category = "Components|Timeline")
ENGINE_API void Stop();

/** 设置要使用的新播放位置时间 */
UFUNCTION(BlueprintCallable, Category = "Components|Timeline")
ENGINE_API void SetNewTime(float NewTime);

/** 用于处理时间轴"事件"的函数签名 */
FOnTimelineEvent OnUpdate();
FOnTimeLineEvent OnFinished();
FOnTimeLineEvent ExampleTimelineEventTrack();

/** 包含条目的结构体,每个条目针对一个浮点插值 */
FTimelineFloatTrack ExampleFloatTrack;

/** 包含条目的结构体,每个条目针对一个向量插值 */
FTimelineVectorTrack ExampleVectorTrack;

/** 用于指明时间轴播放方向的枚举数据 */
ETimelineDirection Direction;
//TimelineActor.h
#include "Components/TimelineComponent.h"
...
protected:
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	UTimelineComponent* ExampleTimelineComp;
public:
	UPROPERTY(EditAnywhere)
	UCurveFloat* ExampleTimelineCurve;
...

//TimelineActor.cpp
ATimelineActor::ATimelineActor() //构造函数
{
    PrimaryActorTick.bCanEverTick = true;
    ExampleTimelineComp = CreateDefaultSubobject<UTimelineComponent>(TEXT("TimelineComponent"));
}

十,蓝图类型

  • Level Blueprint 关卡蓝图

  • Blueprint Class 蓝图类

  • Data-Only Blueprint 仅数据蓝图

  • Blueprint Interface 蓝图接口

  • Blueprint Macro Library 蓝图宏库

十一,结构体变量

        结构体是相关联不同数据类型的合集,以便进行访问;可能已经在蓝图中用到了简单结构体, 因为Vectors, Rotators, Transforms均为结构体变量;结构体也可内嵌;

 

访问结构体信息
  • Splitting Struct Pins

  • Breaking Structs

 

  • Making Structs

  • Setting Members in Structs

 

自定义结构体

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值