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

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;
    
}

 

 

 

 

 

相关文章:

  • UE4 角色用Child Actor组建添加装备 这样方便随时添加,更换套装等行为
  • Unity Assets目录下的特殊文件夹名称
  • Unity-ShaderVariantCollection
  • Unity渲染教程(九):复杂材质 https://www.jianshu.com/p/5e3af869870f
  • HttpWebRequest(System.Net)模拟HTTP发送POST
  • C#中用HttpWebRequest中发送GET/HTTP/HTTPS请求 (转载)
  • System.Net.HttpWebRequest.GetRequestStream超时问题
  • System.Net.HttpWebRequest.GetResponse() 远程服务器
  • 【转载】HttpWebRequest的GetResponse或GetRequestStream偶尔超时 + 总结各种超时死掉的可能和相应的解决办法
  • UE4 AIController
  • [UE4]创建自定义AIController的方法(C++)
  • eclipse + pydev远程调试OpenStack
  • 调用shell jenkins不能自动结束
  • Unreal 第三方 Python平台
  • 【UE4_C++】<14-3>用户界面 UI和UMG——为UI创建屏幕尺寸自适应缩放
  • echarts花样作死的坑
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • VUE es6技巧写法(持续更新中~~~)
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 对象引论
  • 汉诺塔算法
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 如何在GitHub上创建个人博客
  • 为什么要用IPython/Jupyter?
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 一、python与pycharm的安装
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​io --- 处理流的核心工具​
  • ${ }的特别功能
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (搬运以学习)flask 上下文的实现
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (七)Knockout 创建自定义绑定
  • (一)UDP基本编程步骤
  • (转) Android中ViewStub组件使用
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)ORM
  • (转载)利用webkit抓取动态网页和链接
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .net Application的目录
  • .NET CLR Hosting 简介
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .Net Redis的秒杀Dome和异步执行
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .NET 中让 Task 支持带超时的异步等待
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • .net通用权限框架B/S (三)--MODEL层(2)