Open13

ゲーム開発 ミニ備忘録

gugu

[問題] UE5.1 ゲーム開始時に、既にOverlapping状態だとOnBeginOverlapEventがコールされない

[解決] 衝突判定を行うActor両方に対して、このプロパティをtrueにする。デフォルトはfalse。
bGenerateOverlapEventsDuringLevelStreaming

gugu

[問題] UE5.0 キャラクターにジャンプアニメーションを再生させてもZ座標が変わらない

[解決] 通常、Unreal EngineにおいてルートモーションはZ軸に対しては適用されない。
適用するには、CharacterMovementのMovementModeをFryingにする必要がある。
ルートモーション有りのジャンプするアニメーションを再生させる際に、添付画像のようにMovementModeを変更させる。

アニメーションの再生が終わったら、MovementModeをWalkingなどの元の状態に戻す。

gugu

[問題] UE5.1 AGameplayCueNotify_ActorのOnRemoveが呼ばれない

[解決]
デフォルトの設定だと呼ばれない。呼ばれるようにする方法は2パターンある。

その1:AGameplayCueNotify_Actor の詳細にある、bAutoDestroyOnRemove をtrueにする。
このCueNotifyを実行したGamePlayEffectが適用し終わり自動的にOnRemoveを呼びたい場合はこれ。

その2:End (Recycle) Gameplay Cue を呼ぶ。
このQueNotifyを実行したGamePlayEffectに関わらず、任意のタイミングでOnRemoveを呼びたいときはこれ。

gugu

[問題] 【Rider】No analysis has been performed

[解決]
ソースファイルがAnalyzeされず、クラスや変数名に色が付かない状態だった
今回は単にそのソースファイルがRiderソリューションに追加されていないためだった。
そのため、配置されているフォルダを右クリック→Addをクリック→AddExistingItemクリックをすることで解決。

gugu

[問題] Generate Visual Studio project fileで does not exist というログは多数出力される

実際のログ
Engine\Engine\Source\Runtime\Messaging\Messaging.Build.cs: warning: Referenced directory 'F:\MyProjecDirectory\Source\Runtime\Messaging\Private' does not exist.

[解決]
私の場合、Engineフォルダをゲームプロジェクトの.uprojectが生成されるディレクトリに配置していたためこの問題が起きていた模様。
Engineフォルダをゲームプロジェクトの中から出すことで解決。

gugu

絶対パスを相対パスに変換

UBlueprintPathsLibrary::MakePathRelativeTo()

相対パスを絶対パスに変換

UBlueprintPathsLibrary::ConvertRelativePathToFull()

gugu

SVN : the following assets could not be successfully checked out from revision control

ファイルのチェックアウトと保存に失敗して見出しのログが出ていた。
エディタのリビジョンコントロールでSVNに接続し直すと解決。

gugu

[問題] UE5.2 エディタ立ち上げ時、UWidgetのGENERATED_UCLASS_BODY()でEnsureが入る / PIEしてウィジェットを生成すると、TakeDerivedWidget can only be used to create SObjectWidget instancesでエラー

[解決]
恐らくエンジンコードに誤って意図していない変更を入れてしまっていたのが原因。
エンジンをダウンロードし直したら解決。

(みんなもこういったことが起きないようにちゃんとエンジンのバージョン管理やったりして意図しない変更入れないようにしようね)

gugu

[問題] UE5.3 キー入力したままRestartGameすると、Restart後にキー入力していないにも関わらず入力されている挙動になる

[解決]
UPlayerInput::FlushPressedKeysをで呼び出して解決。
自分の場合はInputComponentにアクションをバインドする前に呼んだ。

[参考ソース]

const APlayerController* PC = GetController<APlayerController>();
PC->PlayerInput->FlushPressedKeys();
gugu

[問題] EditorUtilityWidgetBlueprint.h(19): [C1083] include ファイルを開けません。'WidgetBlueprint.h':No such file or directory

UEditorUtilityWidgetBlueprintを使うための依存モジュールの追加に不備があった。

[解決]
依存モジュールに「Bluetility」と「UMGEditor」の追加が必要。
UMGEditorまで必要だとはドキュメントに書いておらず、ハマってしまった。

in MyProject.Build.cs

gugu

[問題] WidgetComponentの表示タイプをScreenにするとBlueprintViewportにウィジェットが表示されなくなる。

A. BlueprintEditorWindow上では表示されない模様。実際にPIEすると問題なく表示されている。

gugu

[問題] ウィジェットを画面全体に表示している場合、アクターのOnClickイベントが実行されない

ソースコードを変えないと実現できなさそうだったので、以下をPlayerControllerに実装した。

UCLASS()
class PROJECTFST_API AFST_PlayerController : public ACommonPlayerController
{
	GENERATED_BODY()
protected:
	virtual bool IsInViewportClient(UGameViewportClient* ViewportClient) const override;

	UPROPERTY(BlueprintReadWrite)
	bool bForceInViewportClient = false;
};

bool AMy_PlayerController::IsInViewportClient(UGameViewportClient* ViewportClient) const
{
	if(bForceInViewportClient)
	{
		return true;
	}
	else
	{
		return Super::IsInViewportClient(ViewportClient);
	}

	return false;
}

gugu

[問題]
OpenSiv3D導入時、下記のリンクエラーでビルドが通らなかった。
LNK1104 cannot open file 'curl/libcurl-d.lib'
LNK1104 cannot open file ‘kernel32.lib’

[解決]

・ライブラリディレクトリにリンクできてなかったライブラリのパスを指定


↓コピペ用

(LibraryPath);C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22000.0\um\x86;(SIV3D_0_6_15)\lib\Windows

・VisualStudioの更新&PCの再起動

(更新が可能であれば、↓画像の赤枠部分に更新ボタンが現れます)