UE4 蓝图 工厂模式和建筑预览 《论张三进厂的第一步》
开始直接抛结论
就三步走
先建立预览模型,再创建实际生产模型,最后删除预览模型。
主要调用GetHitResultUnderCursorByChannal获取鼠标位置,以及SpawnActor等常见命令。
可以增加碰撞检测 如果有需要
可以增加模型旋转 如果有需要
简陋的HUD 先从皮开始讲


需要创建对应的接口
BuildingMasterClass对应创建的Class类
工厂模式的体现,你放Class直接生成一个对应的实例

有需要就来一个结构 去放类似的数据

之后可以再蓝图中调用数据生成对应的Actor
预览BP BuildingPreviewBP 《只停留在预览模式中的模型》
实现的接口 Construct Building
见词生意
就是创建预览ACOTR的一套龙
局部和整体逻辑类似
erDiagram
BuildingPreviewBP ||--o{ ConstructMasterBP: entrust
BuildingPreviewBP ||--o{ PreviewActor: newAndDestory
ConstructMasterBP ||--o{ RealActor: new
工厂和代理的体现
graph TD
Start --> new一个Actor
new一个Actor --> 把之前的内容清理
把之前的内容清理 --> 创建一个新的显示模型
创建一个新的显示模型 --> 删除预览Actor
Construct Building的逻辑

DestoryPreview Function 清空操作

Gate之后为移动预览模型服务
这里设置模型Rotation重置 具体看需要
SpawnPreview Function 创建预览模型

Tick Event 移动预览模型

这里结合Gate操作食用为了保证在预览模型创造出来后才进行Actor位置,overlap之类的判断。
PlayController 总控制器《上帝之手》
RotationBuilding《90°》

我反正把旋转预览模型操作反这里了
如果自己觉得耦合度高,有类似需求可以放在其他地方
CreateConstruct《第二条龙》

这里用点击操作来确认放置模型位置
需要配合状态变量判断进入该步骤

逻辑和之前的BuildingPreviewBP类似
其中进行了结构体信息的传递 最后删除预览模型 实现Real模型代替的效果。
SetConstruct 《填写信息》

这里回到BuildingPreviewBP中
我需要他的Location Rotation等信息注册到ConstructMasterBP中
这里拉了一长串的就是结构体
ConstructMasterBP 《洋葱拔完最后其实很简单》
实际模型的生成者

目前只有一个function
读取结构体然后生成Real模型
凑合的工厂模型显示
