質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Unreal Engine

Unreal Engineは、Epic Games社によって開発されたゲームエンジンです。高レベルの移植性を持っており、様々なプラットフォームのゲーム開発が可能。GitHubアカウントを登録すれば無料でダウンロードできます。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

UE4

UE4はUnreal Engine(アンリアルエンジン)の第4世代です。 UEは、Epic Gamesより開発されたゲームエンジンです。

Q&A

解決済

1回答

1591閲覧

UE4.25でパッケージ化するとオブジェクトが消える

nicoyou

総合スコア129

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Unreal Engine

Unreal Engineは、Epic Games社によって開発されたゲームエンジンです。高レベルの移植性を持っており、様々なプラットフォームのゲーム開発が可能。GitHubアカウントを登録すれば無料でダウンロードできます。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

UE4

UE4はUnreal Engine(アンリアルエンジン)の第4世代です。 UEは、Epic Gamesより開発されたゲームエンジンです。

0グッド

0クリップ

投稿2020/09/25 12:29

編集2020/09/27 18:24

エディタでのデバッグや、スタンドアローンでは正常に表示されるオブジェクトが、シッピングでパッケージ化した際に消えてしまいます。(win10)
どの様な情報を書けばいいのかわからないので、情報が不足している場合は教えてください。
消えるオブジェクトはプログラム内でスポーンしているもので、(見た目は完全に消えているが)BeginPlay関数は確実に実行されています。
理由はBeginPlay関数内で行っているファイルへのログ出力が実行されているからです。またマテリアルやメッシュの読み込みに失敗しているわけでもありませんでした。
原因が推測できる方がいらっしゃいましたら教えていただけると嬉しいです。

C++

1// Fill out your copyright notice in the Description page of Project Settings. 2 3#pragma once 4 5#include "CoreMinimal.h" 6#include "GameFramework/Actor.h" 7#include "Crystal.generated.h" 8 9class UDestructibleComponent; 10 11UCLASS() 12class ACTIONCPP_API ACrystal : public AActor 13{ 14 GENERATED_BODY() 15 16 UDestructibleComponent* dest_mesh = nullptr; 17 bool break_flag = false; 18 USkeletalMesh* mesh = nullptr; 19 UMaterialInstance* material = nullptr; 20 21public: 22 // Sets default values for this actor's properties 23 ACrystal(); 24 25 // Called every frame 26 virtual void Tick(float DeltaTime) override; 27 28protected: 29 // Called when the game starts or when spawned 30 virtual void BeginPlay() override; 31 32 // 何かにぶつかると呼び出される関数 33 UFUNCTION(BlueprintCallable) 34 void OnHit(UPrimitiveComponent* HitComponent, AActor* OtherActor, UPrimitiveComponent* OtherComponent, FVector NormalImpulse, const FHitResult& Hit); 35 36 // ダメージが与えられた時の処理 37 float TakeDamage(float DamageAmount, struct FDamageEvent const& DamageEvent, class AController* EventInstigator, class AActor* DamageCauser) override; 38 39public: 40 // オブジェクトが破壊されているかどうかを取得する 41 bool GetDamaged() const; 42}; 43

C++

1// Fill out your copyright notice in the Description page of Project Settings. 2 3 4#include "Crystal.h" 5#include "GameLib.h" 6#include "DestructibleComponent.h" 7 8// Sets default values 9ACrystal::ACrystal() 10{ 11 PrimaryActorTick.bCanEverTick = false; 12 13 dest_mesh = CreateDefaultSubobject<UDestructibleComponent>(TEXT("DestructibleMesh")); 14 dest_mesh->BodyInstance.SetCollisionProfileName("Crystal"); 15 dest_mesh->OnComponentHit.AddDynamic(this, &ACrystal::OnHit); 16 17 // アセットをContentから取得 18 static ConstructorHelpers::FObjectFinder<USkeletalMesh> mesh_asset(TEXT("/Game/Data/Meshes/Cone4_StaticMesh_DM.Cone4_StaticMesh_DM")); 19 // アセットに適用する自作マテリアルをContentから取得 20 static ConstructorHelpers::FObjectFinder<UMaterialInstance> material_asset(TEXT("/Game/Data/Materials/M_Glass_Green.M_Glass_Green")); 21 22 if (mesh_asset.Succeeded()) mesh = mesh_asset.Object; 23 else GameLib::PrintErrorLog(TEXT("Failed to load mesh asset.")); // メッシュアセットの読み込みに失敗しました 24 if (material_asset.Succeeded()) material = material_asset.Object; 25 else GameLib::PrintErrorLog(TEXT("Failed to load material asset.")); // マテリアルアセットの読み込みに失敗しました 26 27 RootComponent = dest_mesh; 28} 29 30// Called when the game starts or when spawned 31void ACrystal::BeginPlay() 32{ 33 Super::BeginPlay(); 34 35 dest_mesh->SetSkeletalMesh(mesh); 36 dest_mesh->SetMaterial(0, material); 37 dest_mesh->SetNotifyRigidBodyCollision(true); 38 dest_mesh->SetGenerateOverlapEvents(true); 39 GameLib::PrintErrorLog(_T("crystal spawn %d"), 10); 40 41 SetActorLocation(GetActorLocation() + FVector(0.f, 0.f, 55.f)); 42} 43 44// Called every frame 45void ACrystal::Tick(float DeltaTime) 46{ 47 Super::Tick(DeltaTime); 48 49 //if (GameLib::GetKey(GetWorld(), EKeys::Q)) 50 //{ 51 // TakeDamage(100.f, FDamageEvent(), nullptr, this); 52 //} 53 54 //SetActorLocation(GetActorLocation() + FVector(-10.f, 0.f, 0.f)); 55} 56 57// 何かにぶつかると呼び出される関数 58void ACrystal::OnHit(UPrimitiveComponent* HitComponent, AActor* OtherActor, UPrimitiveComponent* OtherComponent, FVector NormalImpulse, const FHitResult& Hit) 59{ 60 if (OtherActor != this/* && OtherComponent->IsSimulatingPhysics()*/) 61 { 62 if (!break_flag) 63 { 64 dest_mesh->SetSimulatePhysics(true); 65 break_flag = true; 66 } 67 } 68} 69 70// ダメージが与えられた時の処理 71float ACrystal::TakeDamage(float DamageAmount, struct FDamageEvent const& DamageEvent, class AController* EventInstigator, class AActor* DamageCauser) 72{ 73 return Super::TakeDamage(DamageAmount, DamageEvent, EventInstigator, DamageCauser); 74} 75 76// オブジェクトが破壊されているかどうかを取得する 77bool ACrystal::GetDamaged() const 78{ 79 return break_flag; 80} 81

C++

1//スポーン処理 2 FVector c_pos(size * box_num_add_x, 0.f, 100.f + crystal_add_z); 3 crystal_actors.Push(Cast<ACrystal>(GetWorld()->SpawnActor(ACrystal::StaticClass(), &c_pos))); 4

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

バックアップから作り直しました

投稿2022/07/11 17:58

nicoyou

総合スコア129

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問