作为一个古法编程爱好者,决定与时俱进,用AI进行UE5的那个肉鸽,毕竟不是研究,只是工程,甚至小demo,那就流水线吧,把主要精力用在有深度的知识的研究上,
看到大家说AI只能用5.8版本,好吧,那就开干。
原以为移植很简单,转成5.8,generate后,.sln很快出来,原以为不过如此。结果出现一个错误,不知所云。
双击RoughLike1.uproject,
直接弹出对话框,显示错误内容
The last build used an outdated BuildSettingsVersion, or the target still requires upgrading.
Please upgrade RoughLike1Editor.Target.cs:
Update the build settings version (Installed Engine Build & Source Build):
DefaultBuildSettings = BuildSettingsVersion.V7;
OR
Declare a unique build environment (Source Build only):
BuildEnvironment = TargetBuildEnvironment.Unique;
If you have already updated the target, would you like to rebuild & open the project?
那就把这两个.target.cs改为DefaultBuildSettings = BuildSettingsVersion.V7;
不过是配置问题,应该的。
现在应该可以了吧,结果
只有血量条,玩家呢?
按下~,双击bp_player0,发现能看到,说明paperzd插件没问题。

不放心,又查了下插件,果然没问题。
那就可能是摄像机的问题。
比如说,osg中camera可以addchild()不同的物体,谁说要加载场景中所有的物体呢?那么类推,UE应该也类似,那camera有问题?
添个灯光和几个圆锥体试试,果然运行后也看不到了

虱子多了不痒,一个个解决吧,先改下花屏问题,改成DX11

既然摄像机有问题,那就试试cameraActor,拖拽到场景,果然能看到

那就用CameraActor替代弹簧臂和摄像机组件。
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Camera", meta = (AllowPrivateAccess = "true"))
TObjectPtr<ACameraActor> ViewCamera;
void AMyPaperZDCharacter::BeginPlay()
{
Super::BeginPlay();
APlayerController* playerController = Cast<APlayerController>(Controller);
ULocalPlayer* localPlayer = playerController->GetLocalPlayer();
UEnhancedInputLocalPlayerSubsystem* subsystem = ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(localPlayer);
subsystem->AddMappingContext(DefaultMappingContext, 0);
FActorSpawnParameters SpawnParams;
ViewCamera = GetWorld()->SpawnActor<ACameraActor>(FVector::ZeroVector, FRotator::ZeroRotator, SpawnParams);
if (ViewCamera)
{
ViewCamera->GetCameraComponent()->SetProjectionMode(ECameraProjectionMode::Orthographic);
ViewCamera->GetCameraComponent()->SetAspectRatio(0.0f);
ViewCamera->GetCameraComponent()->SetConstraintAspectRatio(false);
ViewCamera->GetCameraComponent()->SetOrthoWidth(2048);
ViewCamera->AttachToActor(this, FAttachmentTransformRules::KeepRelativeTransform);
ViewCamera->SetActorRelativeLocation(FVector(0, 0, 1000));
FVector2D ViewportSize;
GEngine->GameViewport->GetViewportSize(ViewportSize);
if (ViewportSize.Y > 0)
{
float TargetOrthoHeight = 1152.0f; // 你希望在纵向上看到的像素高度(自行微调)
float NewOrthoWidth = TargetOrthoHeight * (ViewportSize.X / ViewportSize.Y);
ViewCamera->GetCameraComponent()->SetOrthoWidth(NewOrthoWidth);
}
// 【重点】蓝图 X/Y/Z → 转成 C++ 旋转
// 蓝图 X = Roll
// 蓝图 Y = Pitch
// 蓝图 Z = Yaw
// C++ FRotator( Pitch, Yaw, Roll )
// 所以 → FRotator( 蓝图Y, 蓝图Z, 蓝图X )
double roll = 0;
double pitch = -90.0;
double yaw = -90.0;
ViewCamera->SetActorRelativeRotation(FRotator(pitch, yaw, roll));
playerController->SetViewTarget(ViewCamera);
}
摄像机果然OK了
但是画面乱七八糟了,
这下懵逼了,是zfighting还是材质?
查看了下地图

原来是材质问题

把 Masked 改为 Translucent,ok了
