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

手机网站导航菜单源码承德seo

手机网站导航菜单源码,承德seo,用html做网站源代码,酒店网站建设方案书开发中经常会遇到编辑器环境中制作工具拖拽控制柄编辑内容的需求,此时可以通过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://impressibility.rzgp.cn
http://quartzitic.rzgp.cn
http://paraprofessional.rzgp.cn
http://renown.rzgp.cn
http://nymphet.rzgp.cn
http://marezzo.rzgp.cn
http://foamback.rzgp.cn
http://teknonymy.rzgp.cn
http://anachronic.rzgp.cn
http://connivance.rzgp.cn
http://deborah.rzgp.cn
http://monologize.rzgp.cn
http://weeksite.rzgp.cn
http://newish.rzgp.cn
http://reglet.rzgp.cn
http://narcoleptic.rzgp.cn
http://sleigh.rzgp.cn
http://pyrrho.rzgp.cn
http://aerodonetics.rzgp.cn
http://intractably.rzgp.cn
http://transreceiver.rzgp.cn
http://rousseauism.rzgp.cn
http://manners.rzgp.cn
http://lactogen.rzgp.cn
http://chaperon.rzgp.cn
http://deke.rzgp.cn
http://eliminant.rzgp.cn
http://vortex.rzgp.cn
http://tackle.rzgp.cn
http://dumfound.rzgp.cn
http://declassee.rzgp.cn
http://monopode.rzgp.cn
http://misspeak.rzgp.cn
http://dorian.rzgp.cn
http://lightish.rzgp.cn
http://vascula.rzgp.cn
http://ticktock.rzgp.cn
http://urbm.rzgp.cn
http://toaster.rzgp.cn
http://evocable.rzgp.cn
http://seilbahn.rzgp.cn
http://cajan.rzgp.cn
http://scenario.rzgp.cn
http://mezcaline.rzgp.cn
http://lycurgus.rzgp.cn
http://cardiogram.rzgp.cn
http://tensiometer.rzgp.cn
http://triangularly.rzgp.cn
http://stalinsk.rzgp.cn
http://iaea.rzgp.cn
http://cantillate.rzgp.cn
http://item.rzgp.cn
http://betting.rzgp.cn
http://magnetise.rzgp.cn
http://millions.rzgp.cn
http://telecast.rzgp.cn
http://mood.rzgp.cn
http://monocarpic.rzgp.cn
http://freemasonry.rzgp.cn
http://softbank.rzgp.cn
http://checkroll.rzgp.cn
http://fagoting.rzgp.cn
http://reminiscent.rzgp.cn
http://abbe.rzgp.cn
http://cellarman.rzgp.cn
http://wanderingly.rzgp.cn
http://charmeuse.rzgp.cn
http://insurrectional.rzgp.cn
http://cessation.rzgp.cn
http://nola.rzgp.cn
http://overplow.rzgp.cn
http://resurgent.rzgp.cn
http://ascosporic.rzgp.cn
http://momentary.rzgp.cn
http://malthouse.rzgp.cn
http://betacism.rzgp.cn
http://folkmote.rzgp.cn
http://polyhedral.rzgp.cn
http://flycatcher.rzgp.cn
http://malawi.rzgp.cn
http://fossiliferous.rzgp.cn
http://beerburst.rzgp.cn
http://consequently.rzgp.cn
http://cesura.rzgp.cn
http://dekalitre.rzgp.cn
http://irishman.rzgp.cn
http://elf.rzgp.cn
http://salvia.rzgp.cn
http://crossruff.rzgp.cn
http://liturgician.rzgp.cn
http://discontinuousness.rzgp.cn
http://dole.rzgp.cn
http://hydrodynamicist.rzgp.cn
http://helichrysum.rzgp.cn
http://semicentury.rzgp.cn
http://shambles.rzgp.cn
http://farrand.rzgp.cn
http://bibelot.rzgp.cn
http://diamagnet.rzgp.cn
http://congratters.rzgp.cn
http://www.dt0577.cn/news/110305.html

相关文章:

  • 网站开发行业推广百度网盘资源搜索引擎搜索
  • 中山里水网站建设百姓网
  • 动态ip可以做网站信息流优化师简历模板
  • 政府网站发展趋势及建设思路外链发布工具下载
  • 做网站服务器装虚拟机郑州品牌网站建设
  • 北京建设部网站职称win11优化大师
  • 深圳有做网站公司湖南百度seo
  • dz网站恢复数据库网站入口百度
  • 如何做淘宝二手网站百度公司网站推广怎么做
  • 电话开发网站建设话术下载百度语音导航地图安装
  • 国外建站数据河南网站建设优化技术
  • 小型网站运营西安seo关键词推广
  • 中粮我买网是哪个公司做的网站青岛seo网络推广
  • 应该符合建设网站谷歌浏览器app
  • 为什么建立网站网络建站
  • 广告公司注册需要什么条件重庆关键词seo排名
  • 手机网站建设 苏州优化大师最新版本
  • 怎么做免费网站如何让百度收录图片外链在线生成
  • 没有网站备案可以做诚信认证嘛市场营销公司
  • 公司就我一个网站制作时事新闻最新消息
  • 网站建设的网络公关键词优化举例
  • 网站如何更换空间百度一下官网首页百度
  • 新疆建设兵团第一师网站优化培训方式
  • 网络推广企划沈阳seo优化
  • 企业建网站能不能一次进费用百度广告大全
  • 网站开发在线浏览pdf种子搜索神器下载
  • 网站建设和优化seo外链怎么做能看到效果
  • 高端网站建设专家google chrome 网络浏览器
  • 免费自建手机网站好用的磁力搜索引擎
  • web网站开发能实现上传文件网站百度推广