UE4 蓝图 生成个体单位 查看独立信息 《重生之我叫张三》
前言
还是那个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。复制代码
长这个样的,减慢停止加速,三个白键是这么告诉你的。复制代码
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中提前设置复制代码
上回暴露出去的接口就绑好了 数据也通了复制代码
总结
生了一个 自己看看复制代码
作者:RIHASU
链接:https://juejin.cn/post/7015461828381802503