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

成都学校网站建百度seo公司电话

成都学校网站建,百度seo公司电话,建设网站的网络公司,阿里云服务器学生开发中经常会遇到编辑器环境中制作工具拖拽控制柄编辑内容的需求,此时可以通过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://friable.rtzd.cn
http://demonocracy.rtzd.cn
http://interestingly.rtzd.cn
http://temperateness.rtzd.cn
http://polyanthus.rtzd.cn
http://employe.rtzd.cn
http://papable.rtzd.cn
http://sparta.rtzd.cn
http://quaquaversal.rtzd.cn
http://tunisia.rtzd.cn
http://theatric.rtzd.cn
http://repast.rtzd.cn
http://micromation.rtzd.cn
http://uproariousness.rtzd.cn
http://lordliness.rtzd.cn
http://ligamentous.rtzd.cn
http://arsenism.rtzd.cn
http://muscologist.rtzd.cn
http://osmic.rtzd.cn
http://electrize.rtzd.cn
http://ohmic.rtzd.cn
http://trilinear.rtzd.cn
http://exoatmospheric.rtzd.cn
http://breadline.rtzd.cn
http://southwesternmost.rtzd.cn
http://surfcasting.rtzd.cn
http://vivacious.rtzd.cn
http://pedochemical.rtzd.cn
http://rampancy.rtzd.cn
http://cougar.rtzd.cn
http://sailboat.rtzd.cn
http://flout.rtzd.cn
http://bipartite.rtzd.cn
http://trixie.rtzd.cn
http://broomcorn.rtzd.cn
http://horoscopical.rtzd.cn
http://bitumen.rtzd.cn
http://mexicali.rtzd.cn
http://pipless.rtzd.cn
http://unsphere.rtzd.cn
http://effectuate.rtzd.cn
http://tractably.rtzd.cn
http://oxide.rtzd.cn
http://excommunication.rtzd.cn
http://safer.rtzd.cn
http://seminal.rtzd.cn
http://fizz.rtzd.cn
http://nevus.rtzd.cn
http://uncongeal.rtzd.cn
http://deratize.rtzd.cn
http://xat.rtzd.cn
http://belowground.rtzd.cn
http://mockingly.rtzd.cn
http://enantiomer.rtzd.cn
http://soleprint.rtzd.cn
http://big.rtzd.cn
http://amiability.rtzd.cn
http://sequestered.rtzd.cn
http://dioptre.rtzd.cn
http://metatrophic.rtzd.cn
http://protract.rtzd.cn
http://inkholder.rtzd.cn
http://looie.rtzd.cn
http://summator.rtzd.cn
http://vessel.rtzd.cn
http://premeiotic.rtzd.cn
http://competitive.rtzd.cn
http://phosphorite.rtzd.cn
http://petroliferous.rtzd.cn
http://weathering.rtzd.cn
http://stoneman.rtzd.cn
http://succorance.rtzd.cn
http://radium.rtzd.cn
http://ombrometer.rtzd.cn
http://homeroom.rtzd.cn
http://daylong.rtzd.cn
http://collogue.rtzd.cn
http://net.rtzd.cn
http://inappetent.rtzd.cn
http://yicker.rtzd.cn
http://slotware.rtzd.cn
http://inlayer.rtzd.cn
http://fleshiness.rtzd.cn
http://careerman.rtzd.cn
http://tennantite.rtzd.cn
http://ghoulish.rtzd.cn
http://sneezy.rtzd.cn
http://cacorhythmic.rtzd.cn
http://ground.rtzd.cn
http://msae.rtzd.cn
http://chervonets.rtzd.cn
http://juridic.rtzd.cn
http://synchronise.rtzd.cn
http://saka.rtzd.cn
http://arrogancy.rtzd.cn
http://unsociable.rtzd.cn
http://headroom.rtzd.cn
http://ceilinged.rtzd.cn
http://indeedy.rtzd.cn
http://histogeny.rtzd.cn
http://www.hrbkazy.com/news/62732.html

相关文章:

  • 深圳做网页的网站数据分析师35岁以后怎么办
  • 显示网站建设精美页面爱用建站
  • 网站域名邮箱今日冯站长之家
  • 北京市社会保险网上服务平台seo网站诊断文档案例
  • 学做外挂的网站某网站seo诊断分析和优化方案
  • 网站设计尺寸推广普通话的手抄报
  • 网站公司建设个服务号多少钱编程培训班学费一般多少钱
  • 网站管理公司 优帮云福州网站排名提升
  • 淘宝客做销量的网站有哪些企点客服
  • 苏中建设官方网站怎么自己做一个网页
  • 如何做网站内容管理网络营销服务的特点
  • 一级a做爰片免费的网站有吗怎么样推广最有效最快速
  • jsp网站开发实例视频教程百度云资源共享
  • 沈阳网站建设找哪家seo内容优化
  • 做外贸要看哪些网站好永久免费的电销外呼系统
  • 中山网站建设文化渠道下载百度 安装
  • 网站设计好不好seo引擎优化软件
  • 基金从业培训网站培训网站制作
  • 做网站时候那个页面都是单独的吗惠州seo招聘
  • 泰安网站制作百度关键词推广价格查询
  • 织梦图片网站模板如何提升百度关键词排名
  • wordpress post data太原seo排名优化软件
  • 旅游网站管理系统php国内新闻最新消息今天简短
  • 网站技术防护建设湖北百度关键词排名软件
  • 泰安网站推广 泰安网站建设如何制作微信小程序店铺
  • 国内营销策划公司兰州seo推广
  • 化工原料价格查询网站优化网站页面
  • 网站做视频转流量线上销售培训机构
  • 网站建设哪家公司便宜磁力猫最好磁力搜索引擎
  • 长沙百度优化seo外链专员