国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

UE5 自定義藍(lán)圖節(jié)點(diǎn)(記錄,備忘)

這篇具有很好參考價(jià)值的文章主要介紹了UE5 自定義藍(lán)圖節(jié)點(diǎn)(記錄,備忘)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

創(chuàng)建一個(gè)工程項(xiàng)目,創(chuàng)建一個(gè)K2Node類(生成節(jié)點(diǎn)),創(chuàng)建一個(gè)藍(lán)圖函數(shù)庫(kù)(實(shí)現(xiàn)節(jié)點(diǎn)內(nèi)功能)

項(xiàng)目.Build.cs內(nèi)添加模塊

// Copyright Epic Games, Inc. All Rights Reserved.

using UnrealBuildTool;

public class NewCoustNode : ModuleRules
{
	public NewCoustNode(ReadOnlyTargetRules Target) : base(Target)
	{
		PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
	
		PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" });

		PrivateDependencyModuleNames.AddRange(new string[] { "BlueprintGraph","UnrealEd","GraphEditor","KismetCompiler" });

		// Uncomment if you are using Slate UI
		// PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });
		
		// Uncomment if you are using online features
		// PrivateDependencyModuleNames.Add("OnlineSubsystem");

		// To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true
	}
}

K2Node.h

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "K2Node.h"
#include "MyNode.generated.h"

/**
 * 
 */
UCLASS()
class NEWCOUSTNODE_API UMyNode : public UK2Node
{
	GENERATED_BODY()

public:

	// //鼠標(biāo)放到上面的說(shuō)明/注釋
	// virtual FText GetTooltipText()const override;
	// //節(jié)點(diǎn)名稱
	// virtual FText GetNodeTitle(ENodeTitleType::Type TitleType)const override;
	// //將節(jié)點(diǎn)添加到藍(lán)圖視圖
	// virtual void GetMenuActions(FBlueprintActionDatabaseRegistrar& ActionRegister)const override;
	// //藍(lán)圖節(jié)點(diǎn)的標(biāo)簽
	// virtual FText GetMenuCategory()const;
	// //展開(kāi)節(jié)點(diǎn)
	// virtual void ExpandNode(FKismetCompilerContext& CompilerContext, UEdGraph* SourceGraph)override;
	// //分配默認(rèn)引腳
	// virtual void AllocateDefaultPins()override;
	// //引腳更改時(shí)會(huì)調(diào)用
	// virtual void PinDefaultValueChanged(UEdGraphPin* ChangedPin)override;
	// //連接情況更改以后
	// virtual void NotifyPinConnectionListChanged(UEdGraphPin* Pin)override;
	//
	// //創(chuàng)建一個(gè)可視小部件來(lái)在圖形編輯器或圖形面板中表示這個(gè)節(jié)點(diǎn)。如果沒(méi)有實(shí)現(xiàn),則將使用默認(rèn)的節(jié)點(diǎn)工廠
	// virtual TSharedPtr<SGraphNode> CreateVisualWidget() { return TSharedPtr<SGraphNode>(); }
	// // 為表示此節(jié)點(diǎn)的小部件創(chuàng)建背景圖像
	// virtual TSharedPtr<SWidget> CreateNodeImage() const { return TSharedPtr<SWidget>(); }
	// //右鍵菜單, 比如添加RemovePin
	// virtual void GetNodeContextMenuActions(class UToolMenu* Menu, class UGraphNodeContextMenuContext* Context) const override;

	//鼠標(biāo)放到上面的說(shuō)明/注釋
	virtual FText GetTooltipText() const override { return FText::FromString(TEXT("This node is used for everyone to learn")); }
	//節(jié)點(diǎn)名稱
	virtual FText GetNodeTitle(ENodeTitleType::Type TitleType) const override { return FText::FromString(TEXT("My Node")); }
	//藍(lán)圖節(jié)點(diǎn)的標(biāo)簽
	virtual FText GetMenuCategory() const { return FText::FromString(TEXT("This is My ClassMenu")); }

	//重寫(xiě)UK2Node的GetMenuActions函數(shù),使其可以在右鍵菜單里找到這個(gè)藍(lán)圖節(jié)點(diǎn)
	virtual void GetMenuActions(FBlueprintActionDatabaseRegistrar& ActionRegistrar) const override;
	//分配默認(rèn)引腳
	virtual void AllocateDefaultPins() override;
	//節(jié)點(diǎn)調(diào)用函數(shù)
	virtual void ExpandNode(FKismetCompilerContext& CompilerContext, UEdGraph* SourceGraph)override;
	
};

K2Node.cpp

// Fill out your copyright notice in the Description page of Project Settings.


#include "NewCoustNode/Public/MyNode.h"

#include "BlueprintActionDatabaseRegistrar.h"
#include "BlueprintNodeSpawner.h"
#include "K2Node_CallFunction.h"
#include "KismetCompiler.h"
#include "MyBlueprintFunctionLibrary.h"

//通用,可以固定格式
void UMyNode::GetMenuActions(FBlueprintActionDatabaseRegistrar& ActionRegistrar) const
{
	Super::GetMenuActions(ActionRegistrar);

	UClass* ActionKey = GetClass();
	//ActionRegistrar需要include
	if (ActionRegistrar.IsOpenForRegistration(ActionKey))
	{
		//UBlueprintNodeSpawner需要include
		UBlueprintNodeSpawner* NodeSpawner = UBlueprintNodeSpawner::Create(GetClass());
		check(NodeSpawner != nullptr);

		ActionRegistrar.AddBlueprintAction(ActionKey, NodeSpawner);
	}
}

void UMyNode::AllocateDefaultPins()
{
	Super::AllocateDefaultPins();

	//創(chuàng)建輸入引腳
	CreatePin(EGPD_Input, UEdGraphSchema_K2::PC_Exec, UEdGraphSchema_K2::PN_Execute);

	//創(chuàng)建輸出引腳01
	UEdGraphPin* staring = CreatePin(EGPD_Output, UEdGraphSchema_K2::PC_Exec, UEdGraphSchema_K2::PN_Then);
	staring->PinFriendlyName = FText::FromString("staring");

	//創(chuàng)建輸出引腳02
	UEdGraphPin* Finished = CreatePin(EGPD_Output, UEdGraphSchema_K2::PC_Exec, UEdGraphSchema_K2::PN_Then);
	Finished->PinFriendlyName = FText::FromString("finished");
}

void UMyNode::ExpandNode(FKismetCompilerContext& CompilerContext, UEdGraph* SourceGraph)
{
	Super::ExpandNode(CompilerContext, SourceGraph);

	UEdGraphPin* ExecPin = GetExecPin();
	UEdGraphPin* ThenPin = GetThenPin();
	if (ExecPin && ThenPin) {

		// 調(diào)用一個(gè)BlueprintFunctionLibrary節(jié)點(diǎn),需要include "UMyBlueprintFunctionLibrary"
		FName MyFunctionName = GET_FUNCTION_NAME_CHECKED(UMyBlueprintFunctionLibrary, starting);

		//UK2Node_CallFunction需要include,CompilerContext需要include并且模塊內(nèi)要添加"BlueprintGraph","UnrealEd","GraphEditor","KismetCompiler"
		UK2Node_CallFunction* CallFuncNode = CompilerContext.SpawnIntermediateNode<UK2Node_CallFunction>(this,SourceGraph);
		CallFuncNode->FunctionReference.SetExternalMember(MyFunctionName, UMyBlueprintFunctionLibrary::StaticClass());
		CallFuncNode->AllocateDefaultPins();
		CompilerContext.MovePinLinksToIntermediate(*ExecPin, *(CallFuncNode->GetExecPin()));


		FName MyFunctionName01 = GET_FUNCTION_NAME_CHECKED(UMyBlueprintFunctionLibrary, Finished);

		UK2Node_CallFunction* CallFuncNode01 = CompilerContext.SpawnIntermediateNode<UK2Node_CallFunction>(this,SourceGraph);
		CallFuncNode01->FunctionReference.SetExternalMember(MyFunctionName01, UMyBlueprintFunctionLibrary::StaticClass());
		CallFuncNode01->AllocateDefaultPins();
		CompilerContext.MovePinLinksToIntermediate(*ExecPin, *(CallFuncNode01->GetExecPin()));
		
		// move pins
		CompilerContext.MovePinLinksToIntermediate(*ThenPin, *(CallFuncNode->GetThenPin()));
		CompilerContext.MovePinLinksToIntermediate(*ThenPin, *(CallFuncNode01->GetThenPin()));
	}
}

BlueprintFunctionLibrary.h

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "MyBlueprintFunctionLibrary.generated.h"

/**
 * 
 */
UCLASS()
class NEWCOUSTNODE_API UMyBlueprintFunctionLibrary : public UBlueprintFunctionLibrary
{
	GENERATED_BODY()

public:
	UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true"))
	static void starting();

	UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true"))
	static  void Finished();
};

BlueprintFunctionLibrary.cpp

// Fill out your copyright notice in the Description page of Project Settings.


#include "MyBlueprintFunctionLibrary.h"

void UMyBlueprintFunctionLibrary::starting()
{
	if (GEngine) {
		const int32 AlwaysAddKey = -1;

		GEngine->AddOnScreenDebugMessage(AlwaysAddKey,
			5.0f,
			FColor::Purple,
			TEXT("starting...")
		);
	}
}

void UMyBlueprintFunctionLibrary::Finished()
{
	if (GEngine) {
		const int32 AlwaysAddKey = -1;

		GEngine->AddOnScreenDebugMessage(AlwaysAddKey,
			5.0f,
			FColor::Red,
			TEXT("finished...")
		);
	}
}

這是簡(jiǎn)單定制藍(lán)圖節(jié)點(diǎn)的實(shí)現(xiàn)過(guò)程文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-604193.html

到了這里,關(guān)于UE5 自定義藍(lán)圖節(jié)點(diǎn)(記錄,備忘)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • UE5 藍(lán)圖編輯美化學(xué)習(xí)

    UE5 藍(lán)圖編輯美化學(xué)習(xí)

    虛幻引擎中干凈整潔藍(lán)圖的15個(gè)提示_嗶哩嗶哩_bilibili ????????好用,愛(ài)用 ? ? ? ? 好用,愛(ài)用 ? ? ? ? 好用,能避免一些的拼寫(xiě)錯(cuò)誤 ? ? ? ? 兩點(diǎn)一水平線 ? ? ? ? (以前不懂,現(xiàn)在經(jīng)常用) ? ? ? ??好用,愛(ài)用 ? ? ? ? . ? ? ? ? . ? ? ? ? 好用,愛(ài)用 ???????

    2024年01月20日
    瀏覽(19)
  • 關(guān)于UE5角色動(dòng)畫(huà)藍(lán)圖的基本操作(基礎(chǔ)向)

    關(guān)于UE5角色動(dòng)畫(huà)藍(lán)圖的基本操作(基礎(chǔ)向)

    1、在做角色藍(lán)圖動(dòng)畫(huà)前,首先需要有一個(gè)可操控的角色。操作方法如下: ? ? ? ? 新建Player文件夾-在其中創(chuàng)建關(guān)于世界設(shè)置的藍(lán)圖:GameModeBase、PlayerController、以及角色所需要的Character(在這里因?yàn)槭且缘谌朔Q為基礎(chǔ)所以創(chuàng)建此藍(lán)圖類)為了區(qū)分與系統(tǒng)的區(qū)別可以在命名前

    2024年02月11日
    瀏覽(23)
  • UE5回合制游戲【2-攝像機(jī)控制】(藍(lán)圖版)

    UE5回合制游戲【2-攝像機(jī)控制】(藍(lán)圖版)

    上一篇文章完成了一些基礎(chǔ)的設(shè)置,這篇文章主要來(lái)設(shè)置一下攝像機(jī)。 攝像機(jī)的控制主要有鼠標(biāo)滾輪控制縮放,WASD鍵控制前后左右移動(dòng),QE鍵控制左右旋轉(zhuǎn)。 首先打開(kāi)BP_Pawn,然后添加Spring和Camera組件。 層級(jí)關(guān)系如下圖 我們把攝像機(jī)放到彈簧臂下面,這樣攝像機(jī)就能跟著彈

    2024年02月03日
    瀏覽(19)
  • 【保姆級(jí)從0到1】UE5 藍(lán)圖入門教程1:關(guān)卡、藍(lán)圖入門

    【保姆級(jí)從0到1】UE5 藍(lán)圖入門教程1:關(guān)卡、藍(lán)圖入門

    20230113 新建選擇 UE 5.1 項(xiàng)目 選擇藍(lán)圖,項(xiàng)目位置 改變編輯器布局,選擇經(jīng)典布局 選擇 File - New Level 準(zhǔn)備創(chuàng)建關(guān)卡 選擇 Basic,點(diǎn)擊 Create 進(jìn)行創(chuàng)建 Ctrl + S 保存新建的關(guān)卡 關(guān)卡藍(lán)圖的打開(kāi) 鼠標(biāo)右鍵,添加藍(lán)圖事件,這里先刪除默認(rèn)的所有藍(lán)圖,然后鼠標(biāo)右鍵,選擇 事件開(kāi)始運(yùn)

    2023年04月08日
    瀏覽(19)
  • UE5學(xué)習(xí)筆記(十四)——藍(lán)圖基礎(chǔ)之第一次做界面

    目錄 制作一個(gè)簡(jiǎn)單的UI 步驟1:添加一個(gè)界面,并顯示在屏幕上 【知識(shí)點(diǎn)】在關(guān)卡界面調(diào)用控件的值 步驟2:藍(lán)圖控制文字改變

    2024年02月04日
    瀏覽(95)
  • 【虛幻引擎UE】UE4/UE5 基于2D屏幕坐標(biāo)獲取場(chǎng)景3D坐標(biāo) 射線檢測(cè)(藍(lán)圖/C++)

    【虛幻引擎UE】UE4/UE5 基于2D屏幕坐標(biāo)獲取場(chǎng)景3D坐標(biāo) 射線檢測(cè)(藍(lán)圖/C++)

    射線檢測(cè)(Ray Casting) 是一種計(jì)算機(jī)圖形和計(jì)算機(jī)圖形學(xué)中的基本技術(shù),用于檢測(cè)光線或射線是否與三維場(chǎng)景中的物體相交,以確定相交點(diǎn)的位置和其他相關(guān)信息。射線檢測(cè)通常用于實(shí)現(xiàn)各種交互功能、渲染效果和物理模擬,包括但不限于鼠標(biāo)拾取、光線追蹤、碰撞檢測(cè)和物

    2024年02月07日
    瀏覽(184)
  • 【UE5/UE4】【UE C++】制作一個(gè)藍(lán)圖宏庫(kù)用以在構(gòu)造器中Spawn Actor

    【UE5/UE4】【UE C++】制作一個(gè)藍(lán)圖宏庫(kù)用以在構(gòu)造器中Spawn Actor

    實(shí)際上該功能可以通過(guò)純藍(lán)圖寫(xiě)出,以下展示藍(lán)圖中如何操作構(gòu)造器 僅需在創(chuàng)建\\\"自定義事件\\\"的時(shí)候勾選\\\"編輯器中調(diào)用\\\"屬性,然后就可以直接在藍(lán)圖中生成 但同時(shí),我們發(fā)現(xiàn)\\\"從類生成Actor\\\"該藍(lán)圖節(jié)點(diǎn)具有生成局限性 無(wú)法在當(dāng)前關(guān)卡外生成 以及無(wú)法生成某些在藍(lán)圖中公開(kāi)卻不在

    2024年02月14日
    瀏覽(26)
  • UE4,UE5虛幻引擎,怎么在藍(lán)圖中獲取FPS幀速率,顯示在UMG(UI)上

    UE4,UE5虛幻引擎,怎么在藍(lán)圖中獲取FPS幀速率,顯示在UMG(UI)上

    前言:在UE中可以使用命令行比如stat fps顯示幀率,但只是顯示在界面,假設(shè)我們要在藍(lán)圖中獲取FPS幀率,并且顯示在我們創(chuàng)建的UMG控件藍(lán)圖。這種stat fps命令行的形式就不行了,因?yàn)樗粫?huì)固定顯示在右上角的位置。 1、在Tick中獲取DeltaSeconds,用1除InDeltaTime,得到幀速率。

    2024年02月11日
    瀏覽(63)
  • 【UE5】藍(lán)圖UI控件菜單錨(Menu Anchor)的使用與浮動(dòng)詳情窗口的制作

    【UE5】藍(lán)圖UI控件菜單錨(Menu Anchor)的使用與浮動(dòng)詳情窗口的制作

    提示:文章寫(xiě)完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔 最近在做畢設(shè),一直在苦惱要怎么精準(zhǔn)地把浮動(dòng)的詳情窗口放在圖標(biāo)的一邊,就比如下圖中的效果 本來(lái)也有想過(guò)直接獲取控件在屏幕上的位置來(lái)計(jì)算浮動(dòng)窗口的生成位置,但神奇的是藍(lán)圖似乎沒(méi)有這個(gè)

    2024年02月11日
    瀏覽(108)
  • UE學(xué)習(xí)記錄03----UE5.2 使用MVVM示例

    UE學(xué)習(xí)記錄03----UE5.2 使用MVVM示例

    1.打開(kāi)ue5.2新建C++項(xiàng)目 2.項(xiàng)目中通過(guò)類導(dǎo)向新建C++類,父類選擇為UMVVMViewModelBase,創(chuàng)建完成會(huì)自動(dòng)打開(kāi)vs ? 3.在VS中對(duì)新建的類進(jìn)行宏定義 使用? C++ 類向?qū)??創(chuàng)建的類聲明自動(dòng)通過(guò)? UCLASS() ?宏進(jìn)行處理。? UCLASS() ?宏使得引擎意識(shí)到這個(gè)類的存在,并且還可以同鍵盤修飾符結(jié)

    2024年02月11日
    瀏覽(30)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包