使用UE 4.23.1
基本上,我正在关注一个非常简单的教程。 我已经扩展了多个基类,并且在我的任何扩展中,似乎所有组件的变量(例如,物理,碰撞,静态网格等)都在每次执行完整项目编译时都会重置。
例如: 我使用自定义功能(TankTrack)扩展了UStaticMeshComponent。我设置了静态网格物体组件,并将“碰撞”调整为“模拟GEnerates命中事件”。坚持下去,但是当我重新编译整个游戏时,一切都会恢复到其原始状态。帮忙!
注意:这会在我声明的变量(并创建UPROPERTY(EditAnywhere))以及默认设置为该组件类型的变量(例如,物理,碰撞等)上发生
这是一个名为“ Grabber”的UActorComponent的示例。如果问题出在蓝图上,那么只有.h文件才重要?
如果我更改maxPickupWeightKg,然后重新编译,更改将不会持久。
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Components/ActorComponent.h"
#include "PhysicsEngine/PhysicsHandleComponent.h"
#include "Grabber.generated.h"
UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )
class FPSExample_API UGrabber : public UActorComponent
{
GENERATED_BODY()
public:
// Sets default values for this component's properties
UGrabber();
protected:
// Called when the game starts
virtual void BeginPlay() override;
public:
// Called every frame
virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override;
/// Grabber functions and variables
UPROPERTY(EditAnywhere, Category = "Grab Setup")
float maxPickupWeightKg = 50.f;
};
.cpp构造函数没什么花哨的:
#include "Grabber.h"
#include "Math/UnrealMathUtility.h"
#include "CollisionQueryParams.h"
#include "Engine/EngineTypes.h"
#include "Engine/World.h"
#include "Components/ActorComponent.h"
#include "Components/PrimitiveComponent.h"
#include "GameFramework/Actor.h"
#define OUT
// Sets default values for this component's properties
UGrabber::UGrabber()
{
PrimaryComponentTick.bCanEverTick = true;
}
.
.
.
“我的FPS蓝图层次结构”已发布:
FirstPersonCharacter(self)
-
CapsuleComponent (This is where all the player meshes are)
-
CharacterMovement
PhysicsHandle
Grabber
谢谢!
答案 0 :(得分:0)
我将其放置在这里,因为我遇到了同样的问题。经过数小时的测试和研究,我在虚幻的论坛中找到了这个答案。希望对您有所帮助。
答案 1 :(得分:0)
使用4.25.3仍未解决。我的解决方法是创建组件的子蓝图,并在Actor上使用它。这样,属性值在编译时不会重置。