2017-06-22 6 views
0

タイトルに記載されている問題で苦労しています。今はコンストラクタでデフォルトの設定をしていますが、それを私の関数で変更したいのですが、 。実行時にゲームの状態を作成して変更する

void AMyGameModeBase::SwapGameState(AGameStateBase* GameStateVariable) 
    { 
     GameStateClass = GameStateVariable->StaticClass(); 
    } 

これを正しく行うにはどうすればよいですか? MyGameModeBase.h

#pragma once 

#include "GameFramework/GameMode.h" 
#include "MyGameModeBase.generated.h" 

/** 
* 
*/ 
UCLASS() 
class PROJECT_API AMyGameModeBase : public AGameMode 
{ 
    GENERATED_BODY() 

public: 

    AMyGameModeBase(); 

    UFUNCTION(BlueprintCallable, Category="GameState") 
    void SwapGameState(AGameStateBase* GameStateVariable); 
}; 

MyGameModeBase.cpp

#include "Project.h" 
#include "MyGameModeBase.h" 


AMyGameModeBase::AMyGameModeBase() 
{ 
    GameStateClass = AGameStateBase::StaticClass(); 
} 


void AMyGameModeBase::SwapGameState(AGameStateBase* GameStateVariable) 
{ 
    GameStateClass = GameStateVariable->StaticClass(); 
} 

私がやっている:これは私の全体のコードです

:良い説明は素晴らしい:)

EDITだろう次に: 1.ゲームモードの青写真を開く 2.イベントからのドラッグプレイを開始し、SwapGameStateを呼び出します。 3. MyGameStateを参照する変数を作成しています。 4.私はノード "GetGameState"で取得した印刷文字列名で印刷していますが、変更されていないことを確認してください。

達成したいことは です。実行時に1.CreateGameStateを実行します。実行時にデフォルトのゲーム状態を使用するように設定します。

+0

です、あなたはどのようなエラーが発生していますか?あなたの正確な問題は何ですか?これらのすべての型の定義とこれらの変数と関数の宣言は何ですか? [最小、**完全**、および検証可能な例](https://stackoverflow.com/help/mcve)を提供し、状況をより詳細に説明してください。 – InternetAussie

+0

質問を編集しました。ちょうどうまくいかないエラーはありません。 –

+0

GameStateは、サーバーから接続されたすべてのクライアントに情報を伝達するためのものです。なぜGameStateを別のものに設定しようとしていますか? – JonS

答えて

2

StaticClass機能は、あなたが何をしたい、このMyStateClass::StaticClass()

のように呼び出す静的関数は、この

void AMyGameModeBase::SwapGameState(AGameStateBase* GameStateVariable) 
{ 
    GameStateClass = GameStateVariable->GetClass(); 
} 
+0

これを実装したら何らかの理由でアクセス違反エラーが発生します: 0x00007FFEBE7D2CDF(UE4Editor-Project.dll) ):0xC0000005:0x0000000000000010の場所を読み取るアクセス違反。発生した –

+0

多くのコードを表示する必要がある場合は、渡す変数はおそらくNULLです – lapinozz

+0

コードはありません。 GameStateリファレンスのみを渡します。だから私はそうだと思います –

関連する問題