Это в Unreal Engine, поэтому он использует некоторый код, но это СЛЕДУЕТ быть стандартной проблемой C++, с которой я могу сказать, почему я размещаю ее здесь. Я мало знаю о указателях, поэтому, вероятно, что-то испортил.Почему мои переменные написаны?
Написание теста автоматизации, но это не должно касаться большей части.
У меня есть целые числа, и 2 из них не сохраняют значения, которые я храню в них. Вот мой текущий код (с дополнительным ненужным материалом я использую для отладки:
UPROPERTY()
ARSRPlayerCharacter* PlayerCharacterX = TestUtils::GetFirstPlayerCharacterServer();
UPROPERTY()
ARSRPlayerCharacter* PlayerCharacterY = TestUtils::GetAdditionalPlayerCharacterServer(2);
UPROPERTY()
int32 StartXPNoBuff = 0;
UPROPERTY()
int32 EndXPNoBuff = 0;
UPROPERTY()
int32 StartXPBuff = 0;
UPROPERTY()
int32 EndXPBuff = 0;
UPROPERTY()
int32 PlayerWoodcuttingXP = 0;
UPROPERTY()
int32* StartXPNoBuffPtr = &StartXPNoBuff;
UPROPERTY()
int32* EndXPNoBuffPtr = &EndXPNoBuff;
UPROPERTY()
int32* StartXPBuffPtr = &StartXPBuff;
UPROPERTY()
int32* EndXPBuffPtr = &EndXPBuff;
PlayerWoodcuttingXP = PlayerCharacterX->SkillsComponent->GetWoodcuttingXP();
ADD_LATENT_AUTOMATION_COMMAND(ChopWood(PlayerCharacterX, PlayerWoodcuttingXP, true, StartXPNoBuff, EndXPNoBuff));
ADD_LATENT_AUTOMATION_COMMAND(Test(&StartXPNoBuff, &EndXPNoBuff));
ADD_LATENT_AUTOMATION_COMMAND(FWaitLatentCommand(5.0f));
ADD_LATENT_AUTOMATION_COMMAND(Test(&StartXPNoBuff, &EndXPNoBuff));
ADD_LATENT_AUTOMATION_COMMAND(TeleportPlayer(PlayerCharacterY, FVector(5499.0f, 2848.0f, 215.0f)));
ADD_LATENT_AUTOMATION_COMMAND(Test(&StartXPNoBuff, &EndXPNoBuff));
ADD_LATENT_AUTOMATION_COMMAND(ChopWood(PlayerCharacterX, PlayerWoodcuttingXP, true, StartXPBuff, EndXPBuff));
ADD_LATENT_AUTOMATION_COMMAND(Test(&StartXPNoBuff, &EndXPNoBuff));
ADD_LATENT_AUTOMATION_COMMAND(CheckXPImproves(this, StartXPNoBuffPtr, EndXPNoBuffPtr, StartXPBuffPtr, EndXPBuffPtr));
ОК, так Латентные команды asyncrhonous Они стоят в очереди в порядке, а следующий один не будет работать, пока предыдущий. вернулось верно. Я прохожу как указатели и ссылок на значениях в течение всего времени я использую эти конкретные переменные, так как все они выстраивались в очередь сразу в зависимости от их значений перед первой латентной командой была завершена.
так правонарушители - это int32 StartXPNoBuff и EndXPNoBuff. Они интуитивно ориентированы на 0 и устанавливаются (на данный момент это должно быть 0 и 34 соответственно каждый раз) в первой функции Latent WoodChop.
Они установлены правильно, как показывает команда скрытых тестов Test(). Контрольная латентная команда выдает «Var1: [StartXPNoBuff], Var2: [EndXPNoBuff]». Ниже приведены значения, которые я получаю из каждый раз, когда он запускается:
Переменная1: 0, var2: 34 var1: 0, var2: 0 var1: -2, var2: 157761904 var1: -2, var2: 157761904
Я не использую эти переменные до последней скрытой команды (другие команды tahn my debug), поэтому значения не должны меняться.
После получения помощи от других, я поставил UPROPERTY() перед каждой переменной, но это не имело значения, для каждой из них была указательная переменная, но это не имеет никакого значения. Кажется, что ничего не работает.
StartXPBuff и EndXPBuff работают точно так же, их значения устанавливаются с помощью ТОЧНОГО же метода, однако они сохраняют свои значения, и с ними нет проблем. Почему я не могу заставить это работать для первых 2?
Что делает метод 'Test'? Поскольку вы передаете ссылки на переменные, которые были случайно изменены, скорее всего, это преступник. – Nacho
Это просто выводит их значения. Проблема была там до метода Test, метод теста был введен, чтобы помочь отслеживать его. – pingu2k4
Выполняет ли ваша функция '' 'перед тем, как команды async будут завершены? –