首页 > 其他分享 >Unreal 蓝图Compile常用API

Unreal 蓝图Compile常用API

时间:2023-02-15 18:56:33浏览次数:40  
标签:API 蓝图 Compile xx Unreal EDITOR OnBlueprintCompiled ValidationErrors

用途

  • 在蓝图中点击Compile的时候,想做一些事,比如,想自定义逻辑检验当前蓝图逻辑甚至子蓝图是否有异常数据,如果有则返回Compile失败。
  • 点击Compile的时候,想自定义一些逻辑,比如把蓝图中某些数据设置到另外一处,不用手写,通过Compile实现。

用法

确保蓝图数据是否正常

  virtual EDataValidationResult IsDataValid(TArray<FText>& ValidationErrors) override;

根据逻辑动态修改蓝图的值

  FBlueprintCompiledEvent& OnBlueprintCompiled() { return BlueprintCompiledEvent; }

具体案例

xx.h
需要在PostInitProperties注册OnBlueprintCompiled,可以在编译,和每次点击Compile都会执行。

	virtual void PostInitProperties() override;

#if WITH_EDITOR
	FDelegateHandle OnBlueprintCompiledHandle;
	// check res and set name
	void OnBlueprintCompiled();

	virtual EDataValidationResult IsDataValid(TArray<FText>& ValidationErrors) override;
#endif // WITH_EDITOR

xx.cpp中

xx
void xx::PostInitProperties()
{
	Super::PostInitProperties();
	
#if WITH_EDITOR
		if (GEditor)
		{
			OnBlueprintCompiledHandle = GEditor->OnBlueprintCompiled().AddUObject(this, &xx::OnBlueprintCompiled);
		}
#endif // WITH_EDITOR


#if WITH_EDITOR
void xx::OnBlueprintCompiled()
{
	//可以做很多事,编译的时候
}

EDataValidationResult xx::IsDataValid(TArray<FText>& ValidationErrors)
{
  if(true) //可以判断当前的数据
  {
  	  const FString Str = FString::Printf(TEXT("xx Has Same Obj, the type xxx"));
			ValidationErrors.Add(FText::FromString(Str));
			return EDataValidationResult::Invalid; //这样 Compile后返回的是失败,并且显示出来
  }
	return Super::IsDataValid(ValidationErrors);
}
#endif // WITH_EDITOR
}

标签:API,蓝图,Compile,xx,Unreal,EDITOR,OnBlueprintCompiled,ValidationErrors
From: https://www.cnblogs.com/u3ddjw/p/17121756.html

相关文章

  • wagger也不好用了!API文档还得是Apipost
    在项目开发测试中,接口文档是贯穿始终的。前后端开发需要在开发前期进行接口定义并形成文档,QA在功能测试和接口测试的环节也需要依赖于这些接口文档进行测试。接口文档往往......
  • 无法加载源 https://api.nuget.org/v3/index.json 的服务索引
    .net6之后,不会随项目生成packages文件夹,将项目拷贝到无联网的电脑上用VS打开时,会出现nuget还原失败的情况,只需要把原电脑中的用户文件夹下的.nuget文件夹拷贝过去,放到对应......
  • 使用c++为Unreal做插件
    a.c++导出为library,他会导出所有数据。b.c++导出dll,他会导出指定的数据。一般用作各种插件为其他语言调用 步骤上大概分为2步,1.c++导出Dll,这里需要注意的是1.......
  • .net core 微服务之API网关 (Ocelot)
    网关为什么要使用网关1、聚合微服务增多,导致客户端不好维护2、聚合微服务进行集群​    2.1增加和修改聚合微服务集群,都要修改客户端,导致客户端不稳定​  ......
  • Ignite系列值7-api方式如何设置默认值
    问题1:Ignite中需要添加默认值,前端未传值的情况下,在Ignite内存数据库中以及异步落库的数据库中都需要有对应的默认值。结论:目前无法通过自定义注解方式设置默认值原因:现......
  • Unreal Engine C++ :Character
    1.新建一个CharacterC++类默认包含:1//构造函数2ATheCharacter();34//开始5virtualvoidBeginPlay()override;67//更新8virtualvoidTick(f......
  • .Net6 WebApi中集成FluentValidation.AspNetCore的用法
    一、首先在nuget管理器中添加FluentValidation.AspNetCore包 二、添加验证类并继承AbstractValidator<T>,T为原始参数类,在验证类的构造函数中添加验证内容  三、......
  • Kubernetes架构设计Concepts之理解Kubernetes API之理解Kubernetes对象
     首先我说下为什么去翻译这些文章,当然也有一些不少文章是翻译的,但是没有对照,或者是全中文的,这个时候你就不好判断理解,特别是比如:从代码角度和运维角度,代码角度呢,我们看到......
  • 在使用Gitlab API获取仓库中的项目的几点说明
    1、不能获取仓库中的全部项目出于性能考虑Gitlab不能一次性获得仓库中的全部项目,GitlabAPI默认做了分页处理,如果未提交分页参数,会默认只显示20条。2、用于分页显示的两......
  • 核心二进制组件源码之kube-apiserver
    什么是kube-apiserverkube-apiserver中文翻译为KubernetesAPI服务器,英文在有时候的阐述中会用KubernetesAPIserver,说的都是kube-apiserver.KubernetesAPIserve......