当前位置: 首页 > news >正文

金华安全网站建设怎么收费个人永久免费自助建站

金华安全网站建设怎么收费,个人永久免费自助建站,陕西省建设厅网站月报,web前端开发介绍开发中经常会遇到编辑器环境中制作工具拖拽控制柄编辑内容的需求,此时可以通过Editor事件拿到对应回调,进行相应更新: 1.创建Mesh编辑Actor类 创建一个Mesh编辑Actor类,提供Mesh顶点编辑的相关逻辑。 .h: #pragma once#inclu…

开发中经常会遇到编辑器环境中制作工具拖拽控制柄编辑内容的需求,此时可以通过Editor事件拿到对应回调,进行相应更新:
在这里插入图片描述

1.创建Mesh编辑Actor类

创建一个Mesh编辑Actor类,提供Mesh顶点编辑的相关逻辑。

.h:

#pragma once#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "ProceduralMeshComponent.h"
#include "DraggableHandleActor.h"
#include "CustomMeshActor.generated.h"UCLASS()
class MYPROJECT6_API ACustomMeshActor : public AActor
{GENERATED_BODY()public:	ACustomMeshActor();UPROPERTY(EditAnywhere, BlueprintReadWrite)UProceduralMeshComponent* MeshComponent;UPROPERTY(EditAnywhere, BlueprintReadWrite)ADraggableHandleActor* HandleP0;UPROPERTY(EditAnywhere, BlueprintReadWrite)ADraggableHandleActor* HandleP1;UPROPERTY(EditAnywhere, BlueprintReadWrite)ADraggableHandleActor* HandleP2;UPROPERTY(EditAnywhere, BlueprintReadWrite)ADraggableHandleActor* HandleP3;protected:// Called when the game starts or when spawnedvirtual void BeginPlay() override;void OnRebuild();UFUNCTION()void OnHandleP0Moved();UFUNCTION()void OnHandleP1Moved();UFUNCTION()void OnHandleP2Moved();UFUNCTION()void OnHandleP3Moved();
};

.cpp:

#include "CustomMeshActor.h"ACustomMeshActor::ACustomMeshActor()
{PrimaryActorTick.bCanEverTick = true;MeshComponent = CreateDefaultSubobject<UProceduralMeshComponent>(TEXT("ProceduralMesh"));RootComponent = MeshComponent;
}void ACustomMeshActor::BeginPlay()
{Super::BeginPlay();HandleP0->OnHandleMoved.AddDynamic(this, &ACustomMeshActor::OnHandleP0Moved);HandleP1->OnHandleMoved.AddDynamic(this, &ACustomMeshActor::OnHandleP1Moved);HandleP2->OnHandleMoved.AddDynamic(this, &ACustomMeshActor::OnHandleP2Moved);HandleP3->OnHandleMoved.AddDynamic(this, &ACustomMeshActor::OnHandleP3Moved);this->OnRebuild();
}void ACustomMeshActor::OnRebuild()
{TArray<FVector> Vertices;FTransform ActorTransform = GetActorTransform();Vertices.Add(HandleP0->GetActorLocation());Vertices.Add(HandleP1->GetActorLocation());Vertices.Add(HandleP2->GetActorLocation());Vertices.Add(HandleP3->GetActorLocation());TArray<int32> Triangles;Triangles.Add(0);Triangles.Add(1);Triangles.Add(2);Triangles.Add(0);Triangles.Add(2);Triangles.Add(3);// 定义 UV 坐标TArray<FVector2D> UV0;UV0.Add(FVector2D(0.0f, 0.0f));UV0.Add(FVector2D(0.0f, 1.0f));UV0.Add(FVector2D(1.0f, 1.0f));UV0.Add(FVector2D(1.0f, 0.0f));// 法线TArray<FVector> Normals;Normals.Add(FVector(0.0f, 0.0f, 1.0f));Normals.Add(FVector(0.0f, 0.0f, 1.0f));Normals.Add(FVector(0.0f, 0.0f, 1.0f));Normals.Add(FVector(0.0f, 0.0f, 1.0f));// 切线TArray<FProcMeshTangent> Tangents;Tangents.Add(FProcMeshTangent(1.0f, 0.0f, 0.0f));Tangents.Add(FProcMeshTangent(1.0f, 0.0f, 0.0f));Tangents.Add(FProcMeshTangent(1.0f, 0.0f, 0.0f));Tangents.Add(FProcMeshTangent(1.0f, 0.0f, 0.0f));TArray<FColor> VertexColors;VertexColors.Add(FLinearColor::White.ToFColor(true));VertexColors.Add(FLinearColor::White.ToFColor(true));VertexColors.Add(FLinearColor::White.ToFColor(true));VertexColors.Add(FLinearColor::White.ToFColor(true));MeshComponent->ClearAllMeshSections();MeshComponent->CreateMeshSection(0, Vertices, Triangles, Normals, UV0, VertexColors, Tangents, true);
}void ACustomMeshActor::OnHandleP0Moved()
{OnRebuild();
}void ACustomMeshActor::OnHandleP1Moved()
{OnRebuild();
}void ACustomMeshActor::OnHandleP2Moved()
{OnRebuild();
}void ACustomMeshActor::OnHandleP3Moved()
{OnRebuild();
}

这部分代码通过UE的ProceduralMeshComponent动态创建顶点和Mesh。

2.创建操作柄

第二步需要实现拖拽操作柄或者修改界面数值得到回调,从而更新Mesh,在UE中这一块的编辑器回调有如下:

virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override; //UE面板修改数值
virtual void PostEditMove(bool bFinished) override; //UE界面拖拽Actor

接下来编写Actor - DraggableHandleActor来实现这样的逻辑:
.h

#pragma once#include "CoreMinimal.h"
#include "DraggableHandleActor.generated.h"DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnHandleMoved);UCLASS()
class MYPROJECT6_API ADraggableHandleActor : public AActor
{GENERATED_BODY()public:ADraggableHandleActor();#if WITH_EDITORvirtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;virtual void PostEditMove(bool bFinished) override;
#endif// Delegate for handle moved callbackUPROPERTY(BlueprintAssignable, Category = "Handle Events")FOnHandleMoved OnHandleMoved; // Delegate for broadcasting the movement
};

.cpp:

#include "DraggableHandleActor.h"ADraggableHandleActor::ADraggableHandleActor()
{
}#if WITH_EDITORvoid ADraggableHandleActor::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent)
{Super::PostEditChangeProperty(PropertyChangedEvent);OnHandleMoved.Broadcast();
}void ADraggableHandleActor::PostEditMove(bool bFinished)
{Super::PostEditMove(bFinished);OnHandleMoved.Broadcast();
}#endif

注意这里定义了一个委托来给外部绑定回调:

DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnHandleMoved);

3.UE整合

在这里插入图片描述
最后在UE中绑定控制柄对应的Actor,并放置进对应的UMG或者Editor触发代码中即可。最后再记录顶点操作位置,再在运行时还原,即可实现这样的编辑器下顶点修改编辑需求。

http://www.dinnco.com/news/31931.html

相关文章:

  • 个人网站排行在哪里打广告效果最好
  • 软件工程师招聘简章河南seo
  • 硅塑胶 东莞网站建设加快实施创新驱动发展战略
  • 优化一下seo简单速排名软件
  • 做花瓶的网站百度一下首页百度
  • 全中文网站开发东莞网络排名优化
  • 东莞网站建设推广多少钱磁力天堂torrentkitty
  • 网站开发实训心得体会平台推广费用一般是多少
  • 电商平台商城系统搭建搜索引擎优化是指什么
  • 给公司做网站的公司整合营销传播策略
  • 攻击自己做的网站网络销售适合什么人做
  • 江苏建设教育网站百度快照推广有效果吗
  • 网站建设领导小组全国疫情排行榜最新情况列表
  • 做网站在手机端预览乱码了百度链接提交收录入口
  • 中国建设银行网上银行官方网站网站推广步骤
  • 微信020网站怎么建立什么是搜索引擎销售
  • 免费域名怎么做网站免费推广网站排名
  • 成都网站排名关键词包括哪些内容
  • 网站建设与管理方案书第三方网络营销平台有哪些
  • 自己建立网站后怎么做淘客搜索引擎优化自然排名的优点
  • 云南营销型网站建设长春做网站推广的公司
  • 网站建设怎样把网页连接起来合肥做网站哪家好
  • 县政府网站网建设方案知乎怎么申请关键词推广
  • 乔拓云微信小程序seo排名优化推广
  • 有路由器做网站账户竞价托管哪里好
  • 自己做产品品牌网站短视频平台推广方案
  • 网站建设需要的一些技术怎么在线上推广自己的产品
  • 网站域名禁止续费网络营销方法和手段
  • 做企业网站需要买什么站长工具使用方法
  • 纯静态网站 维护百度的客服电话是多少