[UE4][C++]调整分屏模式下(本地多玩家)视口的显示位置和区域

news/2024/11/9 1:00:13/

一、分屏模式设置

          在UE4中,多个玩家共用一个显示器就可以启用分屏模式,按玩家人数(最大四人)将屏幕均匀分割,显示不同玩家的视角,开发者可以在编辑器里设置分割类型(水平或者垂直),这个分割是采用UV坐标的方式。

(进入项目设置--项目--地图和模式--本地多人)

调整Player的摄像机的宽高比,可以调整显示画面的大小比例

二、分屏位置构造

分屏源代码位于:\Runtime\Engine\Private\GameViewportClient.cpp 

        其位置位于构造函数中  (部分源码截图),它定义了从1个玩家到4个玩家的的屏幕排列顺序和区域。

分屏方式定义如下

/*** Enum of the different splitscreen types*/
namespace ESplitScreenType
{enum Type{// No splitNone,// 2 player horizontal splitTwoPlayer_Horizontal,// 2 player vertical splitTwoPlayer_Vertical,// 3 Player split with 1 player on top and 2 on bottomThreePlayer_FavorTop,// 3 Player split with 1 player on bottom and 2 on topThreePlayer_FavorBottom,//3 Player vertical splitThreePlayer_Vertical,//3 Player horizontal splitThreePlayer_Horizontal,// 4 Player grid splitFourPlayer_Grid,// 4 Player vertical splitFourPlayer_Vertical,// 4 Player horizontal splitFourPlayer_Horizontal,SplitTypeCount};// Deprecated old FourPlayer grid enum valueUE_DEPRECATED(4.21, "FourPlayer is now FourPlayer_Grid")const Type FourPlayer = FourPlayer_Grid;
}

 屏幕排列位置和区域定义如下


/** Structure to store splitscreen data. */
struct FPerPlayerSplitscreenData
{float SizeX;float SizeY;float OriginX;float OriginY;FPerPlayerSplitscreenData(): SizeX(0), SizeY(0), OriginX(0), OriginY(0){}FPerPlayerSplitscreenData(float NewSizeX, float NewSizeY, float NewOriginX, float NewOriginY): SizeX(NewSizeX), SizeY(NewSizeY), OriginX(NewOriginX), OriginY(NewOriginY){}};

 因此只要我们去修改结构体里的数据就可以做到调节位置和区域

三、分屏位置调节

为了能在蓝图里动态修改我同样也构建了相同的结构体

USTRUCT(BlueprintType)
struct FSplitData
{GENERATED_USTRUCT_BODY()UPROPERTY(EditAnywhere)float SizeX;UPROPERTY(EditAnywhere)float SizeY;UPROPERTY(EditAnywhere)float OriginX;UPROPERTY(EditAnywhere)float OriginY;FSplitData(){SizeX = 0;SizeY = 0;OriginX = 0;OriginY = 0;}FSplitData(float x,float y,float sizex,float sizey):OriginX(x),OriginY(y),SizeX(sizex),SizeY(sizey){}
};

我在gamemode里创建代码,在地图蓝图中去调用代码就可以改变分屏位置

void ABloodGameModeBase::SplitScreen(TArray<FSplitData> DataArray)
{//4个playerif (GEngine && GEngine->GameViewport){if (DataArray.Num() == 4){for (int i = 0; i < 4; i++){GEngine->GameViewport->SplitscreenInfo[ESplitScreenType::FourPlayer_Vertical].PlayerData[i].OriginX = DataArray[i].OriginX;GEngine->GameViewport->SplitscreenInfo[ESplitScreenType::FourPlayer_Vertical].PlayerData[i].OriginY = DataArray[i].OriginY;GEngine->GameViewport->SplitscreenInfo[ESplitScreenType::FourPlayer_Vertical].PlayerData[i].SizeX = DataArray[i].SizeX;GEngine->GameViewport->SplitscreenInfo[ESplitScreenType::FourPlayer_Vertical].PlayerData[i].SizeY = DataArray[i].SizeY;}}//logGEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("SplitScreen"));}
}


http://www.ppmy.cn/news/988253.html

相关文章

小程序 获取用户头像、昵称、手机号的组件封装(最新版)

在父组件引入该组件 <!-- 授权信息 --><auth-mes showModal"{{showModal}}" idautnMes bind:onConfirm"onConfirm"></auth-mes> 子组件详细代码为: authMes.wxml <!-- components/authMes/authMes.wxml --> <van-popup show…

web流程自动化详解

今天给大家带来Selenium的相关解释操作 一、Selenium Selenium是一个用于自动化Web浏览器操作的开源工具和框架。它提供了一组API&#xff08;应用程序接口&#xff09;&#xff0c;可以让开发人员使用多种编程语言&#xff08;如Java、Python、C#等&#xff09;编写测试脚本&…

获评最高级别权威认证!融云通过中国信通院「办公即时通信软件安全能力」评测

点击报名 8 月 3 日&#xff08;周四&#xff09;融云直播课~ 近期&#xff0c;融云再获权威认可&#xff0c;旗下百幄智能在线办公套件平台正式通过中国信通院“办公即时通信软件安全能力”测评&#xff0c;并获得最高级别“卓越级”证书。关注【融云 RongCloud】&#xff0c;…

第四代SHARC® ADSP-21479KBCZ-2A、ADSP-21479BSWZ-2A、ADSP-21479KSWZ-2A高性能DSP(数字信号处理器)

第四代SHARC Processors 现在内置低功耗浮点DSP产品&#xff08;ADSP-21478和ADSP-21479&#xff09;&#xff0c;可提供改进的性能、基于硬件的滤波器加速器、面向音频与应用的外设以及能够支持单芯片解决方案的新型存储器配置。所有器件都彼此引脚兼容&#xff0c;而且与以往…

【Ansible】Ansible自动化运维工具的应用与常用命令

ansible自动化运维工具 一、ansible 的概述1. ansible 的概念2. ansible 的特性 二、ansible 的部署与命令1. ansible 的部署1.1 服务器ip地址设置1.2 ansible 服务器部署 2. ansible 命令行模块2.1 command 模块2.2 shell 模块2.3 cron 模块2.4 user 模块2.5 group 模块2.6 co…

主从搭建失败的原因

1、Slave_IO_Running是connecting&#xff0c;Slave_SQL_Running是yes 是因为从机使用配置的主机信息没有登陆到主机里面&#xff01;修改(从机里面) 2、Slave_IO_Running是yes&#xff0c;Slave_SQL_Running是no 原因是主机和从机里的数据不一致&#xff1a; 导致&#xff…

抖音seo短视频账号矩阵系统技术开发简述

说明&#xff1a;本开发文档适用于抖音seo源码开发&#xff0c;抖音矩阵系统开发&#xff0c;短视频seo源码开发&#xff0c;短视频矩阵系统源码开发 一、 抖音seo短视频矩阵系统开发包括 抖音seo短视频账号矩阵系统的技术开发主要包括以下几个方面&#xff1a; 1.前端界面设…

网站测试的主要方法

网站测试的主要方法 网站测试是保证网站质量的重要手段&#xff0c;通过对网站进行测试可以及时发现问题并修复&#xff0c;提高用户体验和网站的可靠性。本文将介绍网站测试的主要方法。 1.功能测试&#xff1a;测试网站的所有功能是否正常。通过模拟用户的操作&#xff0c;…