UE4 给static mesh 动态添加Socket

UE4 给static mesh 动态添加Socket

https://blog.csdn.net/u011407338/article/details/103313608

做个笔记

做项目遇到一个问题,就是需要给静态模型 static mesh 动态添加 Socket,手动必须在编辑器下,打开模型编辑器窗口,如下右下角这里添加

//目前只有4.23 版本的代码中含有Add Socket()函数,但是这个函数需要传入一个空的Socket类型的索引,翻遍了蓝图也没有相关的节点,只能自己在插件里创建了。

 

UE4源代码 参考 位置

D:\Program Files\Epic Games\UE_4.23\Engine\Source\Editor\UnrealEd\Private\Fbx\FbxStaticMeshImport.cpp

2267行    到  2297行

下面是实现代码 记得将xxx 换成你自己的蓝图类名

xxxBPLibrary.h里

包含头文件

#include "Engine/StaticMeshSocket.h"    添加插槽

/*   在传入的Static mesh 组件上 创建一个空的Socket 类型*/
        UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject", DisplayName = "Create Socket", Keywords = " Static Mesh Socket"), Category = " Plugin")
        static UStaticMeshSocket* CreateSocket(UObject* WorldContextObject, UActorComponent * ActorComp, FName MySocketName, FTransform SocketTransform,FString MyTag);

xxxBPLibrary.cpp里

UStaticMeshSocket* UxxxxxBPLibrary::CreateSocket( UObject * WorldContextObject, UActorComponent * ActorComp, FName MySocketName, FTransform SocketTransform, FString MyTag)
{
    class UStaticMeshSocket* MySocket ;
    UStaticMeshComponent* SourceMeshComp = Cast<UStaticMeshComponent>(ActorComp);
    UStaticMesh* MyStaticMesh = SourceMeshComp->GetStaticMesh();

    // If the socket didn't exist create a new one now
    MySocket = NewObject<UStaticMeshSocket>(MyStaticMesh);
    check(MySocket);

        MySocket->SocketName = MySocketName;
        MyStaticMesh->AddSocket(MySocket);

        MySocket->Tag = MyTag;

        MySocket->RelativeLocation = SocketTransform.GetLocation();
        MySocket->RelativeRotation = SocketTransform.GetRotation().Rotator();
        MySocket->RelativeScale = SocketTransform.GetScale3D();
    
        return MySocket;
    
}

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值