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

相关文章

Linux lvm实例之如何创建一个专用于MySQL数据存储的LVM卷组

《Linuxlvm实例之如何创建一个专用于MySQL数据存储的LVM卷组》:本文主要介绍使用Linux创建一个专用于MySQL数据存储的LVM卷组的实例,具有很好的参考价值,希望对大家有所帮助,... 目录在Centos 7上创建卷China编程组并配置mysql数据目录1. 检查现有磁盘2. 创建物理卷3. 创

Nginx 413修改上传文件大小限制的方法详解

《Nginx413修改上传文件大小限制的方法详解》在使用Nginx作为Web服务器时,有时会遇到客户端尝试上传大文件时返回​​413RequestEntityTooLarge​​... 目录1. 理解 ​​413 Request Entity Too Large​​ 错误2. 修改 Nginx 配置2.1

Python对PDF书签进行添加,修改提取和删除操作

《Python对PDF书签进行添加,修改提取和删除操作》PDF书签是PDF文件中的导航工具,通常包含一个标题和一个跳转位置,本教程将详细介绍如何使用Python对PDF文件中的书签进行操作... 目录简介使用工具python 向 PDF 添加书签添加书签添加嵌套书签Python 修改 PDF 书签Pytho

PyQt6中QMainWindow组件的使用详解

《PyQt6中QMainWindow组件的使用详解》QMainWindow是PyQt6中用于构建桌面应用程序的基础组件,本文主要介绍了PyQt6中QMainWindow组件的使用,具有一定的参考价值,... 目录1. QMainWindow 组php件概述2. 使用 QMainWindow3. QMainW

Java 如何创建和使用ExecutorService

《Java如何创建和使用ExecutorService》ExecutorService是Java中用来管理和执行多线程任务的一种高级工具,可以有效地管理线程的生命周期和任务的执行过程,特别是在需要处... 目录一、什么是ExecutorService?二、ExecutorService的核心功能三、如何创建

使用Python创建一个功能完整的Windows风格计算器程序

《使用Python创建一个功能完整的Windows风格计算器程序》:本文主要介绍如何使用Python和Tkinter创建一个功能完整的Windows风格计算器程序,包括基本运算、高级科学计算(如三... 目录python实现Windows系统计算器程序(含高级功能)1. 使用Tkinter实现基础计算器2.

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地

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