UE委托

单播代理

声明单播代理

DECLARE_DELEGATE(Delegateone);
DECLARE_DELEGATE_OneParam(Delegatetwo, float);
DECLARE_DELEGATE_TwoParams(Delegatethree, FString, float);
DECLARE_DELEGATE_RetVal(float, Delegatefour);

命名代理并且添加函数。

public:
	Delegateone Delegateone;
	Delegatetwo Delegatetwo;
	Delegatethree Delegatethree;
	Delegatefour Delegatefour;
	void functionone();
	void functiontwo(float value);
	void functionthree(FString str, float value);
	float functionfour();

绑定函数到代理

	Delegateone.BindUObject(this, &ATestActor1::functionone);
	Delegatetwo.BindUObject(this, &ATestActor1::functiontwo);
	Delegatethree.BindUObject(this,&ATestActor1::functionthree);
	Delegatefour.BindUObject(this, &ATestActor1::functionfour);

执行委托

	Delegateone.ExecuteIfBound();
	Delegatetwo.ExecuteIfBound(1.0f);
	Delegatethree.ExecuteIfBound("test",1.0f);
	float key = Delegatefour.Execute();

多播代理

声明代理并创建函数

DECLARE_MULTICAST_DELEGATE_OneParam(MultiDelegate, float);


	MultiDelegate MultiDelegate;

	UFUNCTION()
	void MultiFunction1(float value);
	UFUNCTION()
	void MultiFunction2(float value);

绑定

	MultiDelegate.AddUObject(this, &ATestActor1::MultiFunction1);
	MultiDelegate.AddUObject(this, &ATestActor1::MultiFunction2);

执行

	MultiDelegate.Broadcast(1.0f);

动态多播代理

动态多播代理可以暴露给蓝图,让蓝图进行事件绑定。代理名称需要以F开头。

DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(Fdelegate, float, value);

//在类中声明变量
UPROPERTY(BlueprintAssignable)
Fdelegate Delegate;

执行

Delegate.Broadcast(1.0f);

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇