选房功能制作

选房功能制作(程序美术)!

用到的资源文件:/Game/3DSystem/BP_Tools/ChooseRoom/BP_ChooseRoomBox
/Game/3DSystem/BP_Tools/ChooseRoom/BP_ChooseRoomManager
/Game/3DSystem/BP_Tools/ChooseRoom/BP_ChooseRoomRoot

1,BP_ChooseRoomRoot,此蓝图为室内模型拼接和镜头相关的蓝图,RoofMeshs,为室内模型顶部模型数组,多个顶部时建立多个,一个模型时一个就行,MainMeshs为主体模型数组,FloorMeshs为地板模型数组,当前分三个部分组成一个完整室内,后续如果有承重墙和其他功能之类的还需要再次细分来展示。拼装好后放入场景楼栋位置处,需要旋转和拖动放到对应楼栋的对应户型上。
1-1,OverLoopCamera Setting设置为俯视时设置,设置参考镜头相关参数。
1-2,WindowCamera Setting为窗景时的设置,设置参考镜头相关参数,为限制一房一景时的视野。
1-3,Room(cameraCompent)为室内漫游时镜头,此组件需要拖动位置来放到室内漫游时进入漫游状态时的位置和角度,高度等。
1-4,OverLook(cameraCompent)为室内俯视时镜头,此组件需要拖动位置来放到室内俯视状态时的位置和角度,高度等。
1-5,Window(cameraCompent)为室内窗景时镜头,此组件需要拖动位置来放到室内窗景状态时的位置和角度,高度等。
注意事项为拼装模型的相对坐标要一致,最好为室内面积中心点,这样方便摆放
总体如图:

2,BP_ChooseRoomBox为点击盒子蓝图,用于生成楼体点击碰撞盒子,需要放到对应楼体对应位置的第一层,必须放到第一层,因为后面会根据当前此碰撞盒子的位置来生成楼体。然后再拖动旋转来包围楼体和适配楼体的位置和角度
2-1,staticMesh为碰撞盒子的模型。
2-2,MeshMaterial为碰撞盒子的材质,可使用默认设置
2-3,NorColor,SelectColor,为正常和选中时的盒子材质颜色
2-4,NorLightIntensity,SelectLightIntensity,为正常和选中时的材质发光系数,可使用默认
2-5,NorOpacity,SelectOpacity,为正常和选中时材质的透明度设置,可使用默认。
以上为外观设置
2-6,RoomName为当前box的户型名,
2-7,BuildName为当前box的楼栋名称,会根据此名称来显示对应的点击楼栋后的box,必填,而且需要跟数据对应上
2-8,BuildTagName,为点击进入室内浏览时需要隐藏的楼体的tag,必填,且需要跟数据对应上
2-9,RootTargetName,为点击此box时需要浏览的室内模型,此参数会对应BP_ChooseRoomManager上的RootTargetMap里面的key对应的BP_ChooseRoomRoot室内本体,必填,而且还需要跟BP_ChooseRoomManager内的map内数据对应上才行。
总体大概如图所示:红框内数据很重要

3,BP_ChooseRoomManager为选房管理器,关联box和root,并执行具体逻辑的管理器,配套上面2个蓝图使用。
3-1,RootBoxMap,此map是配置box根据参数设置自动生成box点击楼体盒子,添加后首先输入当前楼体的名称,比如1栋,2栋等,然后再List内点击添加对应结构体来生成不同部分不同的楼体,生成的结构体有5个参数
3-1-1,BuildName为楼体名称,此参数跟box的BuildName需要配套,当需要使用BuildName作为显示筛选功能时需要,如果没有对应功能可以不管,随便填,有的话就必须对应起来。
3-1-2,ChooseRoomBox_Root,此地方需要吸取对应的放在第一层并位置匹配上的box组件,通过对应组件的位置和参数生成楼体。
3-1-3,StartFloor,起始楼层,当生成的box为从第一层开始时填0即可,比如要从第二层开始生成则填1,依次类推,跟Floornum配套使用,FloorNum为生成多少层楼,这样可以使用不同的box拼装不同的楼层来实现不同楼层的户型不一致时产生的问题,比如从第一层开始生成1-4层为一个box时StartFloor为0,FloorNum为4,即可,然后再List再添加一个结构体选中另外的户型和名称的box组件来生成5-8层,此时新的结构体StartFloor为4,FloorNum为3,如果还要继续拼装再新建结构体就行。
3-1-4,FloorHeight,为楼层高度,一般为300,单位为毫米通过此参数来生成box的高度设定。
3-2,RootTargetMap,此参数为室内组件的map,需要新增然后填上box指定的RootTargetName并吸入对应的BP_ChooseRoomRoot组件即可,为BP_ChooseRoomRoot做配对使用,也可以先命名并吸入对应BP_ChooseRoomRoot,然后再创建box指定对应参数。为必填参数。
3-3,BoxMap,当使用自动生成时作为浏览使用,里面是展示对应楼栋号内所有box的一个可视化参数,预留当各种box各种户型各种不匹配需要手动拖放box手动吸取使用,即预留不自动生成box时才使用。
3-4,Update,刷新按钮,当修改box属性和参数时需要刷新才能把对应修改更新到自动生成的box内。
大体如图所示:

美术需要在场景内做好以上工作。
程序调用:
BP_ChooseRoomManager内,
ShowBoxByBuildName,此接口为根据buildName显示隐藏不同的box
Reset为重置函数,进入其他功能时需要调用。
ShowBoxByMapKey,根据楼栋显示楼栋下所有box。
ReturnChooseBuildIcon,返回选择楼栋时状态。
InRoom,触发进入选房模式。
BoxChooseRoom,此函数为点击box后执行的函数,此时根据逻辑可以点击直接进入选房模式就调用上一个函数,或者生成选房的UI,再通过UI再来进入选房,都行,此处需要程序根据逻辑修改,改动较大的函数。