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

相关文章

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

SpringQuartz定时任务核心组件JobDetail与Trigger配置

《SpringQuartz定时任务核心组件JobDetail与Trigger配置》Spring框架与Quartz调度器的集成提供了强大而灵活的定时任务解决方案,本文主要介绍了SpringQuartz定... 目录引言一、Spring Quartz基础架构1.1 核心组件概述1.2 Spring集成优势二、J

Pydantic中Optional 和Union类型的使用

《Pydantic中Optional和Union类型的使用》本文主要介绍了Pydantic中Optional和Union类型的使用,这两者在处理可选字段和多类型字段时尤为重要,文中通过示例代码介绍的... 目录简介Optional 类型Union 类型Optional 和 Union 的组合总结简介Pyd

Docker镜像修改hosts及dockerfile修改hosts文件的实现方式

《Docker镜像修改hosts及dockerfile修改hosts文件的实现方式》:本文主要介绍Docker镜像修改hosts及dockerfile修改hosts文件的实现方式,具有很好的参考价... 目录docker镜像修改hosts及dockerfile修改hosts文件准备 dockerfile 文

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

idea中创建新类时自动添加注释的实现

《idea中创建新类时自动添加注释的实现》在每次使用idea创建一个新类时,过了一段时间发现看不懂这个类是用来干嘛的,为了解决这个问题,我们可以设置在创建一个新类时自动添加注释,帮助我们理解这个类的用... 目录前言:详细操作:步骤一:点击上方的 文件(File),点击&nbmyHIgsp;设置(Setti

Vue中组件之间传值的六种方式(完整版)

《Vue中组件之间传值的六种方式(完整版)》组件是vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用,针对不同的使用场景,如何选择行之有效的通信方式... 目录前言方法一、props/$emit1.父组件向子组件传值2.子组件向父组件传值(通过事件形式)方