printscreen 发表于 2017-9-29 10:08:23

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

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哥
页: [1]
查看完整版本: UE4中数值冒泡排序和实际使用示例