前言
还是那个RTS游戏视频的复现 好消息是到了生成个体单位后,源视频支持1080P,省的看的费劲。
具体效果就是在地图上任意位置生成单位,点击后查看个体的HUD。

开始讲咯
资源生成BP <SPAWN被翻译成了产卵>
从头开始得从MASTER那块来说
资源单位 <每次实例都会随机变化的TA>
先说说资源单位
逻辑上就是一个带有MESH的ACTOR蓝图 外挂了随机变量

让后编辑后就开始变了


效果表现和Blender中的粒子系统不一二至,随机数嘛,套上去就开始变身了。
资源单位生成区域 <拉一片地 生一片仔>
核心就是弄个射线检测,撞到地形就开始生成对应ACTOR。

我把ResourceType这个Param设置为上面提的随机资源生成MasterBP的引用。就可以乱变了。
然后要设置一个LocalCounts 变量暴露出去好设置生成固定单位数量
之后就用边界弄个立方体范围,随机打点,射线打地。


附加定时器生成资源 <tick tick 生生生>
为了实现定时器和游戏时间相结合 是需要搭上上一篇的
也就是GameState和PlayController 获取对应的时间相关的变量 GameSpeedModifier 并且搭上来自GameState的顺风车
绑定到他的炸弹人叫做update Game Speed的dispatcher

第一步就是获取当前设置下的GameState和PlayController的引用对象
第二步就是绑定DISPATCHER每当游戏时间速度变化时调用重置定时器的时间
其中的游戏时间速度变化需要搭上上一篇的时间HUD。

长这个样的,减慢停止加速,三个白键是这么告诉你的。
graph TD
GameTimeHUD --> GameState的Dispatcher:GameSpeedController -->
SourceSpawnBp:自定义事件:GetGameSpeed

原视频中支持的游戏时间和现实时间的切换是用enum进行设置的

这一块是在BeginPlay序列的最后

承接上文的区域资源生成,独立出来用于生成单个资源

人物单位生成 <人造人造人>
都是人单位了,NAME SEX AGE BIRTHDAY起码都是要的
出生时先把性别决定下来
这里的MATERIAL实例用于之后的材质复色区别性别



原视频中使用STRUCT进行了数据的存储。就是上一个图中break后拉下来一长片的。
同时进行了名 姓的区分 顺道给了个便宜贴图。
贴图的类型居然是slate 不是image

出生后再把生日定下来
这个出生时期需要把age与游戏设定时间相减 而这个GAME TIME是在GameState中设置的 需要一个GameState的ref调用对应的function
当然如果是2月29号出生 会有BUG 算你厉害

每当生日 老妈就会来叫你
在GameState中设置Dispatcher

同时还需要在原GameState中的SetCalender Function修改添加点

然后把生成的PAWN绑定上去

自己写个CheckBirthday 如果生日是游戏时间当天是不会up的 上一步有了dayUpdate>0的判定

按V一键产仔
这时候需要回到PlayController中了 把Input和Camera的功能都放在里了。
调用按下的POSITION数据 spawn ACTOR 就完事了
人物下方的红圈贴花效果需要自己去原视频看


人物数据查看 <午时已到 biubiubiu>
整体难度就是HUD和UnitMaster的信息交互
创建人物信息HUD <张三医院出示单>

建立人物信息链接 <抽血验人>
记得暴露出去 一会要出去链接

回到PlayController加上ref信息

你问我这个ref哪里设置的 产仔的时候就标记了

人物HUD数据设置差不多就这个意思意思

PlayController对应Dispatcher设置 <点击抽血>

回到UnitMaster中 那个人物生成ACTOR绑定上去

custom事件 这里==self做了一个判断自身是否符合要求 然后调用HUD把自己数据绑上去就没啥了 这里的unitRef 需要BeginPlay中提前设置

上回暴露出去的接口就绑好了 数据也通了

总结
生了一个 自己看看
