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

上市企业网站建设kindergarten wordpress theme

上市企业网站建设,kindergarten wordpress theme,建设网站几种方法,平面设计工作室业务范围开发中经常会遇到编辑器环境中制作工具拖拽控制柄编辑内容的需求,此时可以通过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.yayakq.cn/news/885014/

相关文章:

  • 大连公司名称大全优化营商环境心得体会2023
  • 一个公司完整的组织架构公司seo排名优化
  • 做互助盘网站多少钱网站开发注意事项
  • 得到做网站公司怎么用服务器lp做网站
  • 织梦可以做婚纱影楼网站吗小程序登录页面
  • 律师在哪个网站做网站建设第一步
  • 郑州大学现代远程教育《网页设计与网站建设》课程考核要求asp网站优化
  • 杭州手机网站制作公司做新闻源网站采集站赚钱
  • 沈阳网站建设推广平台wordpress婚礼主题公园
  • 网站服务类型是什么意思下载的网站模板怎么使用
  • 交互设计就业前景上海百度搜索排名优化
  • 自适应网站建设多少钱中英版网站怎么做
  • 阿里云上传的网站 服务器路径网页设计灵感网站
  • 做网站的分辨率要多大四川住房城乡建设厅网站首页
  • 加急网站备案惠东做网站
  • 品牌建设网站有哪些沈阳建设网站公司
  • 北京网站制作策划中山网页设计培训
  • 实力网站开发电商网站的多选菜单插件
  • 知名网站建设官网网站开发 费用
  • 网站安全建设进展情况移动网站开发技术有哪些
  • 网站页面设计知识上海市政网
  • 电商网站前端设计方案河北中凯建设有限公司网站
  • 建材类网站模板西安网站建设易网宣
  • 房地产行业网站开发网站ip做网站
  • 用户体验好的网站wordpress 404比较多
  • 做网站需要的程序南昌p2p网站专业建设
  • 做外贸的网站需要什么网站构建免费
  • 做盗版小说网站犯法吗医生在网站上做自我宣传
  • 平湖城乡规划建设局网站网站建设合同需要交印花税
  • 网站积分程序怎么建设wordpress付费下载插件