这篇文章主要为大家详细介绍了unity实现动态排行榜,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了unity实现动态排行榜的具体代码,供大家参考,具体内容如下
在做2048游戏的时候要实现排行榜的功能:
1.超出显示范围可以通过滑动滚动条来上下查看
2.动态插入行
3.每次插入自动更新排名信息
其实和滑页效果类似,只不过需要再加入排序的元素。
1.超出显示范围可以通过滑动滚动条来上下查看
滑页效果(也就是超出显示范围如何显示)见Unity实现滑动更换界面的效果
排行榜的rank、Viewport、content同滑页中的组件配置。
排行榜是由排名、名字、分数组成的。
滚动条的滑动是每一行每一行形式的,所以给容器Content加水平布局组件和容器大小的自适应。
参数都是一点点试出来的,没别的办法==
2.动态插入行
动态插入当然要用预制件了:也就是上图中的line
关于line,每一行显然是竖直的布局(排名、名字、分数),所以加竖直布局组件,line是image,其下有三个Text(排名、名字、分数):
参数都是一点点试出来的,没别的办法==
接下来就要用代码插入了,插入的调用在3中(因为游戏中的需求是输入名称点登陆后再在排行榜中插入),并且更新排行榜(更新的代码在3中,其实就是找到当前分数在排行榜中的位置,然后插入,在遍历其后元素让他们的排名都比前一位+1,最后只需要更新排名、名字、分数即可,并不用destroy)
/// <summary>
/// 生成UI元素
/// </summary>
public void CreateNewLine(PlayerNode tmp)
{
//法1:通过GameObject
//法2:通过预制件
GameObject l = Instantiate(line);
l.transform.SetParent(transform);
l.transform.GetChild(0).GetComponent<Text>().text = tmp.Rank.ToString();
l.transform.GetChild(1).GetComponent<Text>().text = tmp.Name;
l.transform.GetChild(2).GetComponent<Text>().text = tmp.Score.ToString();
}
public void updateRank(List<PlayerNode> players)
{
for(int i = 0; i < transform.childCount; i++)
{
//Destroy(transform.GetChild(i).gameObject);
Transform l = transform.GetChild(i);
l.GetChild(0).GetComponent<Text>().text = players[i].Rank.ToString();
l.GetChild(1).GetComponent<Text>().text = players[i].Name;
l.GetChild(2).GetComponent<Text>().text = players[i].Score.ToString();
}
//for(int i = 0; i < players.Count; i++)
//{
// CreateNewLine(players[i]);
/
本文标题为:unity实现动态排行榜
- WPF使用DrawingContext实现绘制刻度条 2023-07-04
- Oracle中for循环的使用方法 2023-07-04
- 在C# 8中如何使用默认接口方法详解 2023-03-29
- Unity Shader实现模糊效果 2023-04-27
- 如何使用C# 捕获进程输出 2023-03-10
- c# 模拟线性回归的示例 2023-03-14
- user32.dll 函数说明小结 2022-12-26
- Unity3D实现渐变颜色效果 2023-01-16
- C# 使用Aspose.Cells 导出Excel的步骤及问题记录 2023-05-16
- .NET CORE DI 依赖注入 2023-09-27