ue4 修改父类组件创建类型或让父类不创建组件

2024-05-13 06:18

本文主要是介绍ue4 修改父类组件创建类型或让父类不创建组件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

修改父类组件创建类型或让父类不创建组件

 

通过AMyCharacter::AMyCharacter(const FObjectInitializer& ObjectInitializer)格式的构造函数,后面采用以下形式:

AMyCharacter::AMyCharacter(const FObjectInitializer& ObjectInitializer)

       :Super(ObjectInitializer.DoNotCreateDefaultSubobject(ACharacter::CapsuleComponentName).SetDefaultSubobjectClass<UMocapSkeletalMeshComponent>(ACharacter::MeshComponentName))

{

       PrimaryActorTick.bCanEverTick = true;

}

其父类为ACharacter:

ACharacter::ACharacter(const FObjectInitializer& ObjectInitializer)

: Super(ObjectInitializer)

{

.......

       CharacterMovement =  CreateDefaultSubobject<UCharacterMovementComponent>(ACharacter::CharacterMovementComponentName);

       if (CharacterMovement)

       {

              CharacterMovement->UpdatedComponent = CapsuleComponent;

              CrouchedEyeHeight = CharacterMovement->CrouchedHalfHeight * 0.80f;

       }

       Mesh =  CreateOptionalDefaultSubobject<USkeletalMeshComponent>(ACharacter::MeshComponentName);

       if (Mesh)

       {

              Mesh->AlwaysLoadOnClient = true;

              Mesh->AlwaysLoadOnServer = true;

              Mesh->bOwnerNoSee = false;

              Mesh->VisibilityBasedAnimTickOption =  EVisibilityBasedAnimTickOption::AlwaysTickPose;

              Mesh->bCastDynamicShadow = true;

              Mesh->bAffectDynamicIndirectLighting = true;

              Mesh->PrimaryComponentTick.TickGroup = TG_PrePhysics;

              Mesh->SetupAttachment(CapsuleComponent);

              static FName MeshCollisionProfileName(TEXT("CharacterMesh"));

              Mesh->SetCollisionProfileName(MeshCollisionProfileName);

              Mesh->SetGenerateOverlapEvents(false);

              Mesh->SetCanEverAffectNavigation(false);

       }

}

ObjectInitializer.DoNotCreateDefaultSubobject 对 父类构造函数中CreateOptionalDefaultSubobject起着作用, 这个函数会根据ObjectInitializer是否设置了DoNotCreateDefaultSubobject决定是否创建给定名称的子对象,如果设置了,则CreateOptionalDefaultSubobject 返回nullObjectInitializer.DoNotCreateDefaultSubobject 对CreateDefaultSubobject中不起作用

ObjectInitializer.SetDefaultSubobjectClass 决定了CreateDefaultSubobjectCreateOptionalDefaultSubobject创建指定子对象时,覆盖其指定的子对象的创建类型,当然覆盖的类型必须是指定的类型子类型。 如果父类的构造函数已经为父类的父类设置过SetDefaultSubobjectClass, 则当前SetDefaultSubobjectClass设置的类必须是父类设置的SetDefaultSubobjectClass类的子类。

这篇关于ue4 修改父类组件创建类型或让父类不创建组件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/984905

相关文章

kotlin中的行为组件及高级用法

《kotlin中的行为组件及高级用法》Jetpack中的四大行为组件:WorkManager、DataBinding、Coroutines和Lifecycle,分别解决了后台任务调度、数据驱动UI、异... 目录WorkManager工作原理最佳实践Data Binding工作原理进阶技巧Coroutine

Linux下修改hostname的三种实现方式

《Linux下修改hostname的三种实现方式》:本文主要介绍Linux下修改hostname的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下修改ho编程stname三种方式方法1:修改配置文件方法2:hFvEWEostnamectl命

Python如何在Word中生成多种不同类型的图表

《Python如何在Word中生成多种不同类型的图表》Word文档中插入图表不仅能直观呈现数据,还能提升文档的可读性和专业性,本文将介绍如何使用Python在Word文档中创建和自定义各种图表,需要的... 目录在Word中创建柱形图在Word中创建条形图在Word中创建折线图在Word中创建饼图在Word

SpringBoot接收JSON类型的参数方式

《SpringBoot接收JSON类型的参数方式》:本文主要介绍SpringBoot接收JSON类型的参数方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、jsON二、代码准备三、Apifox操作总结一、JSON在学习前端技术时,我们有讲到过JSON,而在

Git如何修改已提交人的用户名和邮箱

《Git如何修改已提交人的用户名和邮箱》文章介绍了如何修改Git已提交人的用户名和邮箱,包括注意事项和具体步骤,确保操作正确无误... 目录git修改已提交人的用户名和邮箱前言第一步第二步总结git修改已提交人的用户名和邮箱前言需注意以下两点内容:需要在顶层目录下(php就是 .git 文件夹所在的目

Python中conda虚拟环境创建及使用小结

《Python中conda虚拟环境创建及使用小结》本文主要介绍了Python中conda虚拟环境创建及使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录0.前言1.Miniconda安装2.conda本地基本操作3.创建conda虚拟环境4.激活c

Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)

《Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)》文章介绍了如何使用dhtmlx-gantt组件来实现公司的甘特图需求,并提供了一个简单的Vue组件示例,文章还分享了一... 目录一、首先 npm 安装插件二、创建一个vue组件三、业务页面内 引用自定义组件:四、dhtmlx

使用Python创建一个能够筛选文件的PDF合并工具

《使用Python创建一个能够筛选文件的PDF合并工具》这篇文章主要为大家详细介绍了如何使用Python创建一个能够筛选文件的PDF合并工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录背景主要功能全部代码代码解析1. 初始化 wx.Frame 窗口2. 创建工具栏3. 创建布局和界面控件4

Vue ElementUI中Upload组件批量上传的实现代码

《VueElementUI中Upload组件批量上传的实现代码》ElementUI中Upload组件批量上传通过获取upload组件的DOM、文件、上传地址和数据,封装uploadFiles方法,使... ElementUI中Upload组件如何批量上传首先就是upload组件 <el-upl

Rust中的BoxT之堆上的数据与递归类型详解

《Rust中的BoxT之堆上的数据与递归类型详解》本文介绍了Rust中的BoxT类型,包括其在堆与栈之间的内存分配,性能优势,以及如何利用BoxT来实现递归类型和处理大小未知类型,通过BoxT,Rus... 目录1. Box<T> 的基础知识1.1 堆与栈的分工1.2 性能优势2.1 递归类型的问题2.2