Unreal Engine 5.5 в релизе!

Unreal Engine 5.5 уже здесь, и это значительный прогресс в области создания анимации, виртуального кинопроизводства и разработки мобильных игр, а многие функции в таких областях, как рендеринг, in-camera-VFX и итерации разработчиков для выхода в продакшен.
В то же время мы продолжаем расширять границы, внедряя…
Новость
3 146
38
EugeAl, так весь прикол как раз в оптимизации этих источников по аналогии с nanite
21
ScorpioT1000, Ну на дальних дистанциях омни тоже неплох. А на сверхдальних даже glow текстура сгодится.
Всё это конечно прекрасно, но вот все меньше и меньше доступно обычному юзеру-энтузиасту. Это ж какой комп должен быть, чтоб он спокойно мог переваривать все эти фичи и их рендеринг 200+ раз в секунду? Одна видеокарта должна наверняка быть топовая
38
неужели в играх будет реальный силуэт костра освещать теперь, а не мигающий омни
Можете помочь? При компиляции кода в Unreal Engune 4.27 выходит ошибка:
Строками 9 и 18 являются:
USystemFunctionLibrary::AsyncLevelLoadFinished;
USystemFunctionLibrary::AsyncLevelLoadSystem;
Код:…
Вопрос
2 163
7
Немного переработал код, теперь всё работает.
#pragma once

#include "CoreMinimal.h"
#include "GameFramework/PlayerController.h"
#include "SystemPlayerController.generated.h"

UCLASS()
class IFIRIMAL_API ASystemPlayerController : public APlayerController
{
	GENERATED_BODY()
public:
			UFUNCTION(BlueprintCallable, Category = SystemPlayer)
			void AsyncLevelLoadSystem();
			void AsyncLevelLoadFinished();
public:
			UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = SystemPlayer)
			TArray<FString> LevelsNameArray;
public:
			UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = SystemPlayer)
			FString Path;
			int Index;
};
#include "SystemPlayerController.h"
#include "UObject/UObjectGlobals.h"
#include "Kismet/GameplayStatics.h"

void ASystemPlayerController::AsyncLevelLoadSystem()
{
	if (LevelsNameArray[Index].IsEmpty())
	{
		ASystemPlayerController::AsyncLevelLoadFinished();
		GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("All Levels Load End"));
	}
	else
	{
		LoadPackageAsync(Path + LevelsNameArray[Index],
			FLoadPackageAsyncDelegate::CreateLambda([=](const FName& PackageName, UPackage* LoadedPackage, EAsyncLoadingResult::Type Result)
				{
					if (Result == EAsyncLoadingResult::Succeeded)
					{
						GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Level Load End"));
						ASystemPlayerController::AsyncLevelLoadSystem();
					}
				}
			),
			PKG_ContainsMap);
		Index++;
	}
}

void ASystemPlayerController::AsyncLevelLoadFinished()
{
	UGameplayStatics::OpenLevel(this, "MainLevel");
	GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Open MainLevel"));
}
Accepted answer
7
Нашел в чем причина ошибки, просто перед USystemFunctionLibrary необходимо было поставить &.
Однако при выполнении кода функций AsyncLevelLoadSystem и AsyncLevelLoadFinished не вызываются. Кто-то может подсказать в чем причина?
#pragma once

#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "SFunctionLibrary.generated.h"

UCLASS()
class IFIRIMAL_API USFunctionLibrary : public UBlueprintFunctionLibrary
{
	GENERATED_BODY()
public:
	UFUNCTION(BlueprintCallable)
	static void AsyncLevelLoadSystem(TArray<FString> LevelName, const FString& LevelPath, int ArrIndex);
	void AsyncLevelLoadFinished();
};
#include "SFunctionLibrary.h"
#include "UObject/UObjectGlobals.h"
#include "Kismet/GameplayStatics.h"

void USFunctionLibrary::AsyncLevelLoadSystem(TArray<FString> LevelName, const FString& LevelPath, int ArrIndex)
{
	if (LevelName[ArrIndex].IsEmpty())
	{
		&USFunctionLibrary::AsyncLevelLoadFinished;
		GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("All Levels Load End"));
	}
	else
	{
		LoadPackageAsync(LevelPath + LevelName[ArrIndex],
			FLoadPackageAsyncDelegate::CreateLambda([=](const FName& PackageName, UPackage* LoadedPackage, EAsyncLoadingResult::Type Result)
				{
					if (Result == EAsyncLoadingResult::Succeeded)
					{
						GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Level Load End"));
						&USFunctionLibrary::AsyncLevelLoadFinished;
					}
				}
			),
			PKG_ContainsMap);
		ArrIndex++;
	}
}

void USFunctionLibrary::AsyncLevelLoadFinished()
{
	UGameplayStatics::OpenLevel(this, "MainLevel");
	GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Open MainLevel"));
}
Как сделать отображение на предмете курсора по центру экрана во время наведения камеры на него. И самое главное-как заставить исчезнуть этот курсор при отведении камеры. Помогите пожалуйста. Мозг кипит))
Вопрос
1 161
31
Не пользуюсь UE, т.ч. мои слова будут максимально общими.
Вот нагуглил две ссылки:
Собственно создаешь RayCast (наверняка такое есть в UE или оно там просто как-то по-другому называется)
Проверяешь коллизию с объектом.
Если луч задел предмет, то устанавливаем положение курсора в центр экрана (задать X, Y как половину ширины и высоты экрана), и отображаем курсор.
Если луч не задевает предмет, то скрываем курсор.
Статья в основном посвящена прекрасному фреймворку со всей основой rts
Из коробки он умеет уже фукнционал:
  • Управления камерой
  • Выбор одного или нескольких юнитов передвижение их
  • Постройка здания
  • Атака других юнитов
  • Миникарта
  • Туман войны
  • Мультиплеер
и многое другое. Обо всем есть на странице…
7 1 258
8
А как называется хоть фреймворк то? 🤔
там кнопочка с ссылочкой есть, можно нажать получить и сразу на gh перейдешь
но он уже давно не развивается, это грустно конечно(
1
А как называется хоть фреймворк то? 🤔