0

アンリアル エンジン 3.5 に基づいた「Outlast」というゲームをしばらくの間改造してきましたが、アンリアル スクリプトが C++ に基づいているため、C++ に関連する問題が発生しています。

文字列とブール値を必要とするゲーム内の既存の関数を呼び出しています。これがその関数です。

event StartNewGameAtCheckpoint(string CheckpointStr, bool bSaveToDisk){
local OLCheckpoint CheckCP, startCP;
local OLHero Hero;
local OLGame CurrentGame;
local OLEngine Engine;


// End:0x33
if(CheckpointStr == "KillHero") >>> this if is new code that I added myself
{
     NumBatteries = 86;
     NotifyDifficultyChanged();
     return;
} ... more irrelevant code comes after this > }

ここでその関数を呼び出しています(2つの方法が可能です):

Method A:
class'OLGFxMoviePlayer'.static.GetOLPC().StartNewGameAtCheckpoint("KillHero", false);
Method B:
Outer.GetOLPC().StartNewGameAtCheckpoint("KillHero", false);

この時点で私が抱えている奇妙な問題が 1 つあります。"KillHero" 文字列が何らかの理由 (両方の方法) でその関数に到達していないため、"CheckpointStr" が "KillHero" ではないため、if ステートメントが失敗します。 !

GetOLPC がどこから来ているのか疑問に思っている人にとっては、それは現在の playercontroller を取得することであり、その関数は次のようになります:

function OLPlayerController GetOLPC(){
return OLPlayerController(GetPC());
//return ReturnValue;   
} 

そして、この関数を介して、「StartNewGameAtCheckpoint」を保持するクラス「OLPlayerController」にアクセスできます。

numbatteries を配置し、notifydifficultychanged が正常に動作するかどうかの外にある場合、それが if であることはわかっています。

ゲームがこれを行っている他の場所と同様に、技術的には機能するはずです。

Outer.consolecommand("camera freecam");

これも内部で文字列を使用しますが、これは正常に機能します。

誰が何が悪いのか知っていますか?

ありがとう

4

1 に答える 1