by Guest » 17 Jan 2025, 06:49
Der folgende Code hat mich ein wenig gestört:
Code: Select all
ARollingBall::ARollingBall()
{
UStaticMeshComponent* sphere;
sphere = CreateDefaultSubobject(TEXT("ball"));
static ConstructorHelpers::FObjectFinder SphereVisualAsset(TEXT("/Engine/BasicShapes/Sphere"));
sphere->SetupAttachment(RootComponent);
if (SphereVisualAsset.Succeeded()) {
sphere->SetStaticMesh(SphereVisualAsset.Object);
}
}
Nämlich, dass ich einen Pfad hart codiere. Was wäre, wenn ich mich entschließen würde, später ein anderes Objekt zu verwenden? Stellen Sie sich vor, ich hätte mehrere Bauern, die alle fest programmiert sind, um diesen Vermögenswert zu nutzen. In cpp gibt es keine einfache Möglichkeit, alle diese Referenzen zu ändern. Ich hatte die gute Idee, meine Netzauswahl anhand von Blaupausen zu prüfen, um die Referenzverarbeitung von Unreal wie folgt zu nutzen:
Code: Select all
UPROPERTY(EditDefaultsOnly, Category = "References")
UStaticMesh * m_staticMesh;
Das Folgende erstellt jedoch kein Netz, wenn ich von dieser Klasse mit einem Blueprint erbe und das Standardnetz (m_staticMesh) festlege:
Code: Select all
ARollingBall::ARollingBall()
{
UStaticMeshComponent* sphere;
sphere = CreateDefaultSubobject(TEXT("ball"));
sphere->SetupAttachment(RootComponent);
if (m_staticMesh) {
sphere->SetStaticMesh(m_staticMesh);
}
}
Ich verwende beide Kompilierungsmethoden für Unreal 4.21.2, aber letztere funktioniert nicht.
Irgendwelche Vorschläge, wie die obige Funktion erstellt werden kann richtig geschätzt werden. Wenn Sie einen besseren Weg kennen, um Hardcodierungspfade zu vermeiden, lassen Sie es mich bitte wissen.
Der folgende Code hat mich ein wenig gestört:
[code]ARollingBall::ARollingBall()
{
UStaticMeshComponent* sphere;
sphere = CreateDefaultSubobject(TEXT("ball"));
static ConstructorHelpers::FObjectFinder SphereVisualAsset(TEXT("/Engine/BasicShapes/Sphere"));
sphere->SetupAttachment(RootComponent);
if (SphereVisualAsset.Succeeded()) {
sphere->SetStaticMesh(SphereVisualAsset.Object);
}
}
[/code]
Nämlich, dass ich einen Pfad hart codiere. Was wäre, wenn ich mich entschließen würde, später ein anderes Objekt zu verwenden? Stellen Sie sich vor, ich hätte mehrere Bauern, die alle fest programmiert sind, um diesen Vermögenswert zu nutzen. In cpp gibt es keine einfache Möglichkeit, alle diese Referenzen zu ändern. Ich hatte die gute Idee, meine Netzauswahl anhand von Blaupausen zu prüfen, um die Referenzverarbeitung von Unreal wie folgt zu nutzen:
[code]UPROPERTY(EditDefaultsOnly, Category = "References")
UStaticMesh * m_staticMesh;
[/code]
Das Folgende erstellt jedoch kein Netz, wenn ich von dieser Klasse mit einem Blueprint erbe und das Standardnetz (m_staticMesh) festlege:
[code]ARollingBall::ARollingBall()
{
UStaticMeshComponent* sphere;
sphere = CreateDefaultSubobject(TEXT("ball"));
sphere->SetupAttachment(RootComponent);
if (m_staticMesh) {
sphere->SetStaticMesh(m_staticMesh);
}
}
[/code]
Ich verwende beide Kompilierungsmethoden für Unreal 4.21.2, aber letztere funktioniert nicht.
Irgendwelche Vorschläge, wie die obige Funktion erstellt werden kann richtig geschätzt werden. Wenn Sie einen besseren Weg kennen, um Hardcodierungspfade zu vermeiden, lassen Sie es mich bitte wissen.