UE4中数值冒泡排序和实际使用示例

[复制链接]
查看5299 | 回复6 | 2017-9-29 10:08:23 | 显示全部楼层 |阅读模式
UE4中数值冒泡排序 。列三个方法:
1.c++排序公开到蓝图,这个是最方便的方法
2.ue4中纯蓝图冒泡排序,这个不理解冒泡排序的节点连起来有些绕 ,不推荐用当参考看看。
3.利用蓝图数组中的现成节点,提取数组中的最大值或者最小值,向另一个数组添加,如每次提取数组的最大值进行添加,再移除,一个循环。直到提取结束。
(3方法看起来不像冒泡其实类似,现成的max of intarray和min of int array节点等同于完成了大小比对交换),这个是我比较推荐大家用的方法,好理解。

.c++公开到蓝图

二,纯蓝图冒泡排序


.提取数组最大值或者最小值(我这里示例的是最大值)


示例操作(三个场景map,多个玩家,游戏结束进行分数统计排列,并按分数高低分配玩家不同的奖励图案,如游戏中的mvp图案,助攻最多,参团最多等等,我的机制没这么系统这里做示例的是 最高分拿mvp 图案奖牌,第二名拿金牌图案,三名银牌图案,以此类推。)

1.多场景跳转,玩家分数累加  就要用instancet
   新建instancet类,创建8个玩家分数值,并添加到数组。创建makearray函数

2.新建cleararray函数(每次排列前清空一次数组)

3.再新建一个数组,接收makearray函数添加的数组值,进行排序


4.最后还要在instancet类中新建一个函数 清零分数

实际用的时候只要cast to instance类 引用这4个函数就行,玩家的分数赋值累加就是那8个变量(我项目里是8个玩家)
最后就是分数显示,用umg或者其他方法都行。我项目中游戏是要带3D眼镜做左右屏的,考虑用umg要做2次而且左右眼间距参数不好调。
分数显示就做成用物体面片显示,双相机对着拍的方式处理的。
分配的奖牌也是做成材质的不是ui。下面是具体分配最高分数拿MVP图案的示例,其他名次图案也可以。

1.新建一个材质球,一个就够了

2.在显示的分数类里,我用的是物体所以是一个actor类,新建宏Arrangementmedals,不是函数 。另外再新建一个数组存储8个图案奖牌,按索引顺序存放图案

intputs节点里有三个类型模型,材质,贴图

最后是这样的

3.还要新建一个宏 我是iscount,这个是用8个玩家游戏结束后各自的分数与instance类中的排列后的数组进行匹配,得到名次。
也就是各自分数匹配到的索引值,并且输出索引。

最后是这样的这个宏有一个输出节点有一个整形值 就是名次,这里要注意遍历数组用foreachloopwithbreak,在inputs节点添加一个Exec
使用的时候新建一个自定义事件 接在break上,这里是防止分数一样的时候出现问题。


4.最后具体调用

开始的时候排列一次

之后显示分数 ,并且将显示的分数匹配名次分配图案

最后的最后 排列匹配之后进行清除数组,还有清零(我清零是放在第一个map里的,没截图)


最后分数 和奖牌图案是动态变换的


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
哦哈呦 | 2017-9-29 11:08:20 | 显示全部楼层
厉害了我的哥
回复 支持 反对

使用道具 举报

YoChian | 2017-10-10 14:55:52 | 显示全部楼层
冒泡吗……为啥不考虑直接c++代码写个高效率算法,不过如果是一局游戏的玩家成绩排序的话,数量不是很多,也不会差很多
回复 支持 反对

使用道具 举报

ft7882886 | 2017-10-11 13:05:35 | 显示全部楼层
感谢分享
回复

使用道具 举报

jie13523306 | 2017-10-23 09:42:19 | 显示全部楼层
看看怎么样,觉得很棒
回复 支持 反对

使用道具 举报

slixwe | 2017-10-26 14:09:02 | 显示全部楼层
好东西,留个脚步
回复 支持 反对

使用道具 举报

yanchangjin | 2017-11-1 10:12:21 | 显示全部楼层
厉害了  world哥
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

16

主题

335

回帖

4170

积分

高阶编码师

积分
4170