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里的,没截图)
最后分数 和奖牌图案是动态变换的
厉害了我的哥 冒泡吗……为啥不考虑直接c++代码写个高效率算法,不过如果是一局游戏的玩家成绩排序的话,数量不是很多,也不会差很多 感谢分享 看看怎么样,觉得很棒 好东西,留个脚步 厉害了world哥
页:
[1]