Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 统一-使文本展开然后收缩,就像向用户弹出一样。我想提请观众注意他们的得分_C#_Unity3d - Fatal编程技术网

C# 统一-使文本展开然后收缩,就像向用户弹出一样。我想提请观众注意他们的得分

C# 统一-使文本展开然后收缩,就像向用户弹出一样。我想提请观众注意他们的得分,c#,unity3d,C#,Unity3d,我正在寻找一种方法,使用户得分,这是一个UI文本组件弹出。我的意思是先扩大然后收缩,也许每次得分增加都会动摇 我真的不知道如何开始。我的分数在增加,我猜我可以改变文本对象的大小,然后使其恢复到原始大小,但这样做看起来不太好。 欢迎任何建议 我会使用一个协同程序,使用Mathf.PingPong更改文本的rectTransform的localScale: // Recommendation: assign Text here in the inspector public Text textToS

我正在寻找一种方法,使用户得分,这是一个UI文本组件弹出。我的意思是先扩大然后收缩,也许每次得分增加都会动摇

我真的不知道如何开始。我的分数在增加,我猜我可以改变文本对象的大小,然后使其恢复到原始大小,但这样做看起来不太好。
欢迎任何建议

我会使用一个协同程序,使用
Mathf.PingPong
更改文本的
rectTransform
localScale

// Recommendation: assign Text here in the inspector
public Text textToScale;
public float halfDuration = 0.5f;    
public float bigScaleMultiplier = 1.5f;

private Coroutine effectCoroutine = null;
private Vector3 scaleStart;

// call this to begin the effect
public void StartEffect()
{
    // ensure duplicates don't run
    if (effectCoroutine == null)
    {
        effectCoroutine = StartCoroutine(DoEffect());
    }
}

private IEnumerator DoEffect()
{
    float elapsedPortion = 0f;
    scaleStart = textToScale.rectTransform.localScale;
    float scaleMultiplierIncrease = bigScaleMultiplier - 1f;

    while (elapsedPortion < 2f)
    {
        // t = What fraction of "big" we are currently at
        float t = Mathf.PingPong(elapsedPortion, 1f);

        float curScaleMultiplier = 1f + scaleMultiplierIncrease * t;

        textToScale.rectTransform.localScale = curScaleMultiplier * scaleStart;
        yield return null;
        elapsedPortion += Time.deltaTime / halfDuration;
    }

    textToScale.rectTransform.localScale = scaleStart;
    effectCoroutine = null;
}
//建议:在inspector中指定此处的文本
公共文本文本缩放;
公共浮动半持续时间=0.5f;
公共浮点bigScaleMultiplier=1.5f;
私有协同路由effectCoroutine=null;
私有向量3 scaleStart;
//调用此函数以开始效果
公共无效开始生效()
{
//确保不运行重复项
if(effectCoroutine==null)
{
effectCoroutine=start例程(DoEffect());
}
}
私有IEnumerator DoEffect()
{
浮动ElapsedParty=0f;
scaleStart=textToScale.rectTransform.localScale;
float-scaleMultiplierIncrease=bigScaleMultiplier-1f;
而(ElapsedPart<2f)
{
//t=我们目前处于“大”的哪一部分
浮球t=数学乒乓球(elapsedpoint,1f);
float curScaleMultiplier=1f+scaleMultiplierIncrease*t;
textToScale.rectcransform.localScale=curScaleMultiplier*scaleStart;
收益返回空;
elapsedpoint+=Time.deltaTime/halfDuration;
}
textToScale.rectTransform.localScale=scaleStart;
effectCoroutine=null;
}

这正是我想要的。非常感谢。