gpt4 book ai didi

c# - 在 Unity 中一般根据分数分配正确的 Sprite

转载 作者:太空宇宙 更新时间:2023-11-03 12:46:01 25 4
gpt4 key购买 nike

我有 10 个 Sprite ,编号为 0-9。我希望分数达到 999。我不想像刚开始那样对 sprite 的更改进行强制编码:

    if (TextHandler.score <= 9)
{

ones = Resources.Load<UnityEngine.Sprite>(tuples[TextHandler.score]);
}

if (TextHandler.score > 9)
{
ones = Resources.Load<UnityEngine.Sprite>(tuples[(TextHandler.score - 10)]);
tens = Resources.Load<UnityEngine.Sprite>(tuples[(TextHandler.score - 10) + 1]);

}
if (TextHandler.score > 19) {
ones = Resources.Load<UnityEngine.Sprite>(tuples[(TextHandler.score - 20)]);
tens = Resources.Load<UnityEngine.Sprite>(tuples[(TextHandler.score - 20) + 1]);
}
rOnes.sprite = ones;
rTens.sprite = tens;
rHuns.sprite = hundreds;

我正在尝试找到一个可以循环遍历的公式,并在不全部写出的情况下完成所有这些代码直到 999。 一些背景个位、十位和匈奴(未显示)都是Sprite类型。 rOnes、rTens 和 rHuns 是 Sprite 渲染器。我根据从 TextHandler.score 中获取的分数分配图像。 Tuple 是一个 String 数组。它们只是按顺序指向纹理目录的字符串。示例:tuples[0] 将返回 0 的纹理。

问题:有没有一种通用的方法可以分配正确的 Sprite 而无需暴力破解。谢谢!

最佳答案

如果你被限制在 999,我想到了一个快速的解决方案:

var score = TextHandler.score; //Int32 I'm assuming
ones = Resources.Load<UnityEngine.Sprite>(tuples[score % 10]);
score /= 10;
// If the score is less than 10 this will be zero
tens = Resources.Load<UnityEngine.Sprite>(tuples[score % 10]);
score /= 10;
// If the score is less than 100 this will be zero
hundreds = Resources.Load<UnityEngine.Sprite>(tuples[score % 10]);

...这可以通过 while 循环自然地推广到更高的幅度,因为这种模式会重复很多次。将来,当你需要对整数中的每个数字做一些事情时,可以考虑使用取模函数“得到”最右边的数字,然后执行整数除以 10,通过左移得到剩余的数字(你会得到如果你以这种方式划分,它们从右到左)。这可以针对任意整数执行(它甚至可以用于任意大的 BigIntegers)。

关于c# - 在 Unity 中一般根据分数分配正确的 Sprite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37291413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com