精灵已更改为特定值-无法弄清楚如何计算该值

时间:2019-07-17 13:57:44

标签: c# android unity3d

感谢您的帮助

我有一个函数,当AngelsValue或DevilsValue更改时,精灵也会更改。

我想做的是:

如果AngelsValue比DevilsValue =精灵更改多3倍

如果AngelsValue是DevilsValue =精灵更改的5倍

如果AngelsValue比DevilsValue =精灵更改多7倍

以及其他方式

如果DevilsValue比AngelsValue =精灵更改多3倍

如果DevilsValue比AngelsValue =精灵更改多5倍

如果DevilsValue比AngelsValue =精灵更改多7倍

我的代码有效,但仅适用于特定数字...并将其实际值设为示例100的值。我将有100行代码:)

非常感谢。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerSpriteChange : MonoBehaviour
{
    public Sprite AngelStage2;

    public Sprite AngelStage3;

    public Sprite AngelStage4;

    public Sprite DevilStage2;

    public Sprite DevilStage3;

    public Sprite DevilStage4;

    void Update()
    {


        if (AngelsCount.AngelsValue >=3 && DevilsCOunt.DevilsValue <= 1)

        {
            this.gameObject.GetComponent<SpriteRenderer>().sprite = AngelStage2;


        }

        else if (AngelsCount.AngelsValue >= 5 && DevilsCOunt.DevilsValue <= 3)
        {
            this.gameObject.GetComponent<SpriteRenderer>().sprite = AngelStage3;
        }

        else if (AngelsCount.AngelsValue >= 7 && DevilsCOunt.DevilsValue <= 5)
        {
            this.gameObject.GetComponent<SpriteRenderer>().sprite = AngelStage4;
        }



        else if (DevilsCOunt.DevilsValue >= 3 && AngelsCount.AngelsValue <= 1)
        {
            this.gameObject.GetComponent<SpriteRenderer>().sprite = DevilStage2;
        }

        else if (DevilsCOunt.DevilsValue >= 5 && AngelsCount.AngelsValue <= 3)
        {
            this.gameObject.GetComponent<SpriteRenderer>().sprite = DevilStage3;
        }

        else if (DevilsCOunt.DevilsValue >= 7 && AngelsCount.AngelsValue <= 5)
        {
            this.gameObject.GetComponent<SpriteRenderer>().sprite = DevilStage4;
        }










    }
}

1 个答案:

答案 0 :(得分:2)

在数值上它们总是分开2吗?如果是这样,您可以使用for循环。如果将i减去3再除以2,则还可以有一个从0开始的连续序列,可以轻松地抓取子画面。从3 =(3-3)/ 2 = 0,5 =(5-3)/ 2 = 1开始。7 =(7-3)/ 2 = 2,依此类推。然后针对相反的方向做同样的事情恶魔。

for (int i = 3; i <= 7; i += 2)
{
   if ((AngelsCount.AngelValue / DevilsCount.DevilsValue) >= i)
   {
      this.gameObject.GetComponent<SpriteRenderer>().sprite = GetAngelStage((i - 3)/2);
   }
}