456人加入学习
(4人评价)
基于蓝图的产品配置器

制作完成于2021.01.31,基于Unreal 4.26.0

价格 免费

在上一步、下一步按钮部分进行修改

1 摄像机控制REF,allow camera change

2 将两个按钮增加判断branch

3 play sound 2d ,各创建2个,一个4个

4 无论是否可用,都继续后面的流程

 

增加说明文本,鼠标悬停时进行提示

1 包裹一个背景图,半透(以免看不清文字)

 

音响控制器中

1 新增函数 updata小贴士

输入值text

2 获取mainUI ref 设置tips文本

 

初始化音响控制器中

1 增加updata小贴士,默认文字:移动鼠标点击定制音响

 

BP 音响

对应非常多的模型

找到on begin cursor over、on end cursor over

1 将所有的on end cursor over输入加入事件

2 音响控制器,选择update小贴士,将所有事件挂上,挂上文字

3 创建所有的on begin cursor over,

 

[展开全文]

处理RGB字符间距的问题

 

将滑动条调勾选变量

 

新建3个float,分别为RGB

默认为0.5

绑定三个滑动条的value

 

在设置背景图片的函数内

1 将RGB挂接到变量上并set

(设置颜色,同时设置滑动条的值)

 

三个滚动条 on value changed时

问题:点击默认数值时,会意外也调用on value changed

 

小问题,点击后滑动条后,所有的数值自动变为0

修改:滑动进度变为修改RGB变量

(小小问题,会重复设置两次通用的数值)

 

挂接按钮的音效

先设置普通按钮的声音 pressed sound

 

 

[展开全文]

更换背景板颜色

 

game mod

1 第三行事件中插入 insert execution pin before

2 获取所有带有Tag的actor

get all actor of class with tag

目标:static mesh actor

tags: Background(记得是在actor的tag里面输入)

3 对背景增加对应的Tags

4 获取背景的mesh

 

mainUI

1 创建背景mesh变量,类型static mesh actor

勾选instance editable、expose on spawn(生成时公开)

调用的时候会自动创建

2 在game mode中,将background mesh挂接上

 

mainUI

创建设置颜色的函数

1 增加三个输入值 RGB

2 设置background_material

color参数的实例,需要创建材质实例(也可以直接设置)

3 获取背景mesh,set vector parameter value on materials,参数名称为color

4 拆开数据结构,也可以不拆开,创建一个make vector,将RGB一一连上

 

复制background_material,创建background_material_instence (材质实例)

将backgound挂接上

勾选可以设置color

 

重新烘焙build lighting only

 

将对应的color的按钮加上点击事件

设置对应的RGB值

 

检测一个对象是否创建成功

is vaild

 

[展开全文]

音响控制器中,增加一个audio组件

1 新建音乐变量,类型为sound base,设为公开

2 在外面挂接音乐文件4个

 

创建函数 play audio

1 输入项 track序号,类型int

2 stop 先停止当前播放

3 set sound 设置音乐,根据输入项传入序号

4 play 播放

 

创建函数 设置audio音量

1 输入项 volume 类型float

2 adjust volume 调整音量

 

mainUI中创建按钮的点击事件

1 在事件的开始,获取音响控制器,并将其提升为变量

创建按钮点击事件

2 获取音响控制器,获取play audio函数,讲起连接在按钮上

3 把滚动条设置为变量,获取滚动条的值

4 加入set audio volume(只要一个),挂接滚动条的值

 

增加滑块滑动的事件on value changed

挂接设置音量事件

 

 

[展开全文]

BP 摄像机控制器中

创建updateUI

 

把需要调用updateUI的地方加上

1 更换摄像机函数内添加

2 初始化摄像机内添加(sequence)

 

game mode  中,将获取摄像机控制,和初始化摄像机进行分离

1 断开 初始化摄像机函数的连接

2 断开 音响控制器的连接,创建音响控制器Ref 

 

初始化摄像机控制器函数中

1 新建mainUI Ref的输入

 

回到game mode

1 刷新初始化摄像机控制器函数(右键 refresh nodes)

2 分别建立 音响控制器初始化、摄像机控制器初始化

 

回到摄像机控制器

1 将新建的mainUI Ref 的输入提升成变量

2 连接update UI

 

修改updateUI

1 获取摄像机的数据表(Get Data Table Row ),将输出拆开

2 挂接摄像机序号,转为string,连接上

3 将值设置在UI对应的变量上

[展开全文]

将game mode中摄像机相关移动到 BP 摄像机控制

1 变量 摄像机序号

2 布尔 是否允许移动摄像机

3 初始化摄像机的函数 

4 更换摄像机的函数

 

开始迁移

1 将game mode 更换摄像机的函数(除了开头)迁入 BP摄像机控制 内

2 修复错误,重新挂接参数、变量

 

修改调用

1 game mode 中 初始化中移动摄像机的相关,移入 初始化摄像机函数内

2 game mode 中 ,将获取的BP 摄像机控制 提升成变量,命名为camera controll Ref

3 game mode 中,将获取每一个音响相关的控制调整成sequence 中并行(非必须,可选)

4 继续将 camera controll Ref 里面,调用初始化摄像机函数

5 删除冗余变量:摄像机们、摄像机序号、是否允许移动摄像机(如果提示在使用,则先删除 更换摄像机view)

 

修改mainUI中的报错

1 获取 camera controller Ref,提升成变量

2 修改原来上一步、下一步按钮中的更换摄像机函数,重新挂接

3 将摄像机移动的缓动值变成变量

4 回到mainUI,获取缓动变量,设置值

5 加上delay,连上变量

7 加回开启摄像机可用的变量

 

初始化的问题

第一行mainUI创建后,第三行才调用camera controller Ref,有可能会创建失败

1 调整顺序,将调用camera controller Ref调整到第一行

2 创建main UI放在第二行

 

 

 

[展开全文]

问题一:会自动生成默认摄像机

思路1:给需要的摄像机加上tag,问题是输出的顺序是乱的,所以不采用

思路2:

1 创建一个BP camera控制器

2 创建变量:cameraViews 类型为摄像机actor 数组,可编辑

3 放入BP 控制器

4 把当前的camera实例放入这个数组

5 重构,将camera相关的代码连接到数组中

 

改造

1 game mode 中,先获取camera组

2 再从camera组中获取camera,继续后面的代码

 

改造2:更换摄像机函数,增加缓动

修改set view target with blend

参数blend time 动画事件

参数blend func 动画类型

(切换动画)

 

发生问题:移动过程中再次点击按钮出问题

1 增加布尔变量: 是否允许更换机位(game mode 中)

2 更换摄像机函数:增加判断,如果为true则继续

    执行更换摄像机后,将其设置为False

3 mainUI里面,上一步和下一步增加delay3秒钟(建议更长,3.5左右,以免延迟导致动画未结束,按钮提前可用)

    delay结束后,将是否允许更换机位设置回true

 

[展开全文]

将camera 数组插入

 

关闭按钮

绑定quit game 

 

game mode

增加切换摄像机的事件

增加布尔——切换摄像机(是否往前)

 

mainUI

1 event construct

2 获取game mode

3 将game mode 转换为BP

4 提升为变量

 

将前、后按钮增加事件

1 切换摄像机变量的是否

 

game mode

1 branch

创建摄像机序号变量

2 将摄像机序号进行累加

3 使用compare int 

4 将摄像机的数量进行比较

5 超过则设为0(返回)

同上的操作复制一份,进行累减

(不同指出在于和0进行对比)

6 符合条件后(越界后),将摄像机序号设为“摄像机序号-1”(最后一个摄像机)

 

调整camera的当前机位

1 将event graph里面设置摄像机的函数复制

2 粘贴到设置摄像机函数上

3 将当前的序号传入

 

 

[展开全文]

修改更新UI函数

1 增加sequence

2 AsCurrency 转换货币单位(显示为美元符号)

150000 USD

3 设置变量:基础货币数值(MainUIRef)

 

链接数据表

1 get data table row 

2 row name 挂接 音响序号 tostring

3 拆开输出值

4 短描述链接——设置变量:音响选择

5 长描述链接

6 价格链接——as currency ——设置变量:音响价格

 

复制上方的逻辑

1 设置主体的序号

2 设置主体的短描述

3  设置价格

 

继续设置重音板、外壳cover

 

设置总价

1 将基础数值设置为一个变量,150000

2 将4个部件的价格进行累加 addition

 

设置长描述

1 将长描述使用 tostring 

2 append 进行字符拼接

   Mounted in 包含

 

 

 

[展开全文]

如何检测某个值是否拿到

is valid 返回false说明拿取失败

 

多个蓝图运行event beginPlay

会存在先后加载的关系,如果存在依赖关系,则有可能运行失败

解决方案:

1 去掉音响控制器的event begin play

2 新建函数 初始化:init 音响控制

3 将事件图表的所有内容,移入 init 音响控制 函数

 

game mode 内调用 初始化音响控制函数

1 获取所有的音响控制器组件(只有1个)

2 返回一个数组,直接调用0号元素

3 get 初始化音响控制函数

 

优化性能:(可选)

game mode 内,直接将值传入

1 删除原有调用音响控制器函数的代码

2 直接set main ui ref

3 获取函数的地方挂上 main ui ref(game mode 里面的)

 

game mode 内增加更新UI的函数

1 新增 更新UI函数(暂时先搁置)

(将对应组成的索值填入对应UI控件的变量)

2 将每个点击事件,加入调用更新UI函数

3 初始化函数内,增加更新UI函数

 

[展开全文]

调整边距的SIZE BOX 边距为10

 

切换到【图表】

创建变量:(默认为文本)

10个基础数值

1个描述文本

镜头的名称

右侧底部小贴士

 

将文本绑定上刚才的变量

content上

 

小贴士颜色太浅,改成0.35

 

通过音响控制蓝图,获得mainUI的值

1 通过GAMEMODE索取值

2 get game mode 

3 转化为BP gamemode

4 提升成变量

 

 

[展开全文]

gamemode里面加载UI

1 sequence 增加一个新的事件

2 create widget 选择:主界面UI

3 将类提升成变量

4 set 变量的名字 MainUIRef (主界面的引用)

5 将变量添加到视口add to viewport

 

数据表

.CSV

创建数据结构

新建Data文件夹

新建蓝图:数据结构structure

FS开头,音响数据行(表头)

编辑数据结构

新建变量

1 短描述:文本

2 长描述:文本

3 价格:integer(以“分”为最小的存储单位,避免浮点数值存储)

 

将CSV拖入UE

类型为DATA TABLE

类型为刚才创建的表头

创建完成一张数据表

表的读取都以第一列RowName获取

 

继续导入其他数据表(暂时先不处理camerViews)

 

选择导入camerViews

创建数据表

DATA TABLE

类型选Tag,GameplayTableRow

 

[展开全文]

调整颜色按钮尺寸:1 外包size box 2 内放文本

按钮的预设颜色:style Normal Hover Press

设置6个预设颜色(直接粘贴多个状态颜色)

 

切换场景按钮

image ——prev on  (next on)

draw as :image

外置size box (64*50)不让图片拉伸

 

放置底部文字(右侧向下居中)

1 增加全屏平铺的水平框

2 放入左右两个垂直框

3 左右填充比例 0.35 0.65

4 想要设置背景图大小跟随

5 将左侧面板包裹border,继承了原来左侧面板的填充参数0.35

6 修改border(边界)的外观appearance,改为0,0,0,0,5

7 右侧增加一个text: 等待数据输入 0.25灰色 24号 贴底

 

增加关闭按钮,右上角对齐,75*75 边距25,exit 图标

 

 

[展开全文]

用水平框包裹滑动条

增加文本:音量 12号

滑动条默认值为1

 

背景色 18号

按钮 BtnBgColor ,调整按钮的尺寸,上下居中,左右填充

 

RGB滚动条,包裹水平框,增加文本 12号

 

按钮命名

文本:等待数据

 

调整整个侧边栏:顶部5像素,边距10像素

增加控件的边距等等

 

 

[展开全文]

标题40号

 

可定制音响系列

RGB0.35

24号

 

透明度0.25%

sizeBox外套(Wrap With ScaleBox):

child layout: Height Override 10

 

2个垂直盒子

加入10行text:右对齐,:RGB0.3 18号

占位符:等待数据

 

基础价格

扬声器选择

扬声器价格

主体选择

主体价格

重音板选择

重音板价格

防尘罩选择

防尘罩价格

总价

 

描述文本18号,自动换行(Auto Wrap Text)

外面套一层size box 200%

 

给音乐按钮命名Track,RGB0.15 16号,调整成填充尺寸

JAZZ DUBSTEP ROCK  CLASSICAL

 

 

[展开全文]

新建widget blueprint

命名为MainUI

 

Canvas Panel

 

vertical box 左侧面板640

小花瓣(按设备的比例缩放:30%)

 

主标题

副标题

image 分隔

Horizontal Box(两个vertical box )

image 分隔

标题

image 分隔

Horizontal Box(内部四个按钮)

滑动条

Horizontal Box(文本,6个按钮)

 

is variable 设为变量(暂时先去除)

设置背景:50%黑色透明度

[展开全文]

音响控制器:

新增函数——获取脚垫的组件:

做2个数组传递mark Array

边框/重音板→制作数组→挂到返回值→修改返回值名称

同样操作4个脚垫→修改返回值

将函数勾选为pure(纯净函数)

 

设置脚垫材质函数:

1 获取脚垫材质

2 遍历所有音响for each loop

3 连接获取脚垫的函数

4 Sequence

5  分别 遍历所有模型

6 set material

 

整理线条

按键C加鼠标左键:注释

按键S加鼠标左键:序列

鼠标左键双击连线:创建变更路线节点

[展开全文]

音响控制蓝图:

脚垫点击事件:

1 创建材质的变量(类型是:material interface,并改成数组类型)

2 每一类模型创建一个材质

3 创建索引变量(用于存储材质当前序号)

4 点击事件,累加索引变量

需要实现循环,采用“取模”的方式

5 获取材质变量的长度,对长度取模

6 取模后的数值,赋值给索引变量

 

创建新函数,执行材质替换的操作

1 创建2个材质变量

右侧inputs:增加外部输入口(类似序列化)

两个材质的输入口

 

脚垫点击事件:

1 两个材质变量,分别去获取索引变量

2 set 脚垫 material,分别设置变量

3 方法①:将两个材质变量开放(序列化)

方法②:在函数内将材质挂上

选择音响控制器的实例,将材质挂上

 

选择get a copy

[展开全文]

汽车 要车面漆xuan r an

[展开全文]

授课教师

SiKi学院讲师

课程特色

视频(28)
下载资料(1)