使用されているエンジンバージョンが UE5.1 以降でしたら、
AActor::AddReplicatedSubObject を利用する事で可能です。
管理オブジェクトである DiceManager は Actor を Outer として生成、
以降のオブジェクトは DiceManager の Outer(Actor)を取得し、
AddReplicatedSubObject で登録する流れです。
ATest::ATest()
{
bReplicateUsingRegisteredSubObjectList = true;
}
void ATest::BeginPlay()
{
if (HasAuthority())
{
DiceManager = NewObject<UDiceManager>(this);
AddReplicatedSubObject(DiceManager);
DiceManager->Init();
}
}
void UDiceManager::Init()
{
AActor* Outer = Cast<AActor>(GetOuter());
if (IsValid(Outer) && Outer->HasAuthority())
{
Dice = NewObject<UDice>(Outer);
Outer->AddReplicatedSubObject(Dice);
}
}
https://docs.unrealengine.com/5.1/ja/replicated-subobjects-in-unreal-engine/#登録済みサブオブジェクトリストの概要
詳しくはこちらをご参照ください。
また、利用できない場合ですが、
ゲーム進行に関わる管理は AGameState で管理するのが一般的かと思います。
別案として DiceManager をアクター化するのも一つの手かと思います。