C# 共程中带浮点数的模

C# 共程中带浮点数的模,c#,math,unity3d,C#,Math,Unity3d,我正在尝试做一个协同程序,将角色设置为persiod的伤害模式。在此期间,我希望它闪烁。我不熟悉模,但我尝试使用它来翻转精灵渲染器每10个左右的周期。但我得到了非常奇怪的值,这是因为它是一个浮动吗?我应该如何团结一致呢 public IEnumerator Hurt_cr (float sec, Vector2 attackPosition, float force) { isHurt = true; AddFor

我正在尝试做一个协同程序,将角色设置为persiod的伤害模式。在此期间,我希望它闪烁。我不熟悉模,但我尝试使用它来翻转精灵渲染器每10个左右的周期。但我得到了非常奇怪的值,这是因为它是一个浮动吗?我应该如何团结一致呢

public IEnumerator Hurt_cr (float sec, Vector2 attackPosition, float force)
        {
                isHurt = true;

                AddForceAtPosition (attackPosition, force);

                SpriteRenderer sprite = GetComponent< SpriteRenderer> ();
                float t = Time.deltaTime;

                while (t < sec) {

                        if ((t % 10) == 0) {

                                print ("sprite on :  " + sprite.enabled);
                                sprite.enabled = !sprite.enabled;
                        }

                        yield return null;
                        t += Time.deltaTime;
                }

                isHurt = false;
        }
public IEnumerator Hurt\u cr(浮动秒,矢量2攻击位置,浮动力)
{
isHurt=true;
添加力位置(攻击位置,力);
spriterendersprite=GetComponent();
float t t=Time.deltaTime;
while(t
不要使用协同程序,它完全没有用。将此更新为:

sprite.enabled = ((int)(Time.time / 10)) % 2 == 0;
编辑:添加了
(int)
cast以获得良好的度量

编辑2:使其闪烁固定次数

添加类属性:

public int flashes = 0;
private bool flashingLastFrame = false;
在更新计数中,如果有闪烁:

bool flashingNow;

if (flashes > 0)
{
    flashingNow = ((int)(Time.time / 10)) % 2 == 0;

    if (flashingNow != flashingLastFrame)
    {
        flashingLastFrame = flashingNow;
        sprite.enabled = flashingNow;
        flashes--; // forgot this to make it stop
    }
}
要从外部将其设置为闪烁3次:

obj.flashes = 6;
或添加一个方便的方法:

public void Flash(int times)
{
    flashes = times * 2;
}
编辑3:对于超快速闪烁:

if (flashes > 0)
{
    flashingLastFrame = !flashingLastFrame;
    sprite.enabled = flashingLastFrame;
    flashes--;
}

为什么协同程序毫无用处?在unity文档中,这似乎是非常推荐的。我还想知道我试模的时候做错了什么。谢谢你的回答!别担心。我总是接受有帮助的答案。我非常感谢所有在论坛上提供帮助的政治公众人物。我不明白。这不会使渲染器一直前后翻转吗?我只是想让它做一小段时间。在我看来,你的代码使它不断闪烁。实际上,我把它放在了更新中,它没有做任何有用的事情。渲染器一直处于禁用状态。使用(int)可以工作,但/10太长。我将其设置为0.2,同时也将其设置为慢速。但是,它仍然会打开每一个更新。我希望每次球员受伤时都能有一秒钟的时间。说真的,这看起来比合作更复杂。或者可能不复杂,但我不想再增加3个成员,只是为了让角色闪现,如果不是nescesary的话。我只是不明白为什么不使用协同程序。我添加了一个int cast,否则它可能无法按预期工作。现在它是正确的。我添加了一个
闪烁--
我之前忘记了。