c # generisch mit geringem Unterschied für Typen?

eachten Sie die beiden Erweiterungen, eine für float und eine für Vector

Notice gibt es nur einen kleinen Unterschied in dervar( Anruf

In c # könnten diese als eine generische geschrieben werden ??

Die Essenz meiner Frage ist:

önnen Sie innerhalb eines Generikums nach der Art des Typs verzweige

public static IEnumerator Tweeng( this float duration,
         System.Action<float> vary, float aa, float zz )
{
    float sT = Time.time;
    float eT = sT + duration;

    while (Time.time < eT)
    {   
        float t = (Time.time-sT)/duration;
        vary( Mathf.SmoothStep(aa,zz, t) ); // slight difference here
        yield return null;
    }

    vary(zz);
}

public static IEnumerator Tweeng( this float duration,
      System.Action<Vector3> vary, Vector3 aa, Vector3 zz )
{
    float sT = Time.time;
    float eT = sT + duration;

    while (Time.time < eT)
    {
        float t = (Time.time-sT)/duration;
        vary( Vector3.Lerp(aa,zz, t) ); // slight difference here
        yield return null;
    }

    vary(zz);
}

(Übrigens, für jede C # -Gurus-Lesung befindet sich das Codebeispiel in Unity, wo Sie in einer Coroutine auf das Framesystem zugreifen.)

Beispiele, wie Sie Tweeng @ aufrufen, wenn Sie Unity-Entwickler les

// tweeng z to 20 degrees in .12 seconds
StartCoroutine(.12f.Tweeng( (t)=>transform.Eulers(0f,0f,t), 0f,20f) );
// fade in alpha in .75 seconds
StartCoroutine(.75f.Tweeng( (u)=>{c.a=u;s.color=c;}, 0f,1f) );

(Wenn Sie Unity noch nicht kennen und nicht mit dem Grundkonzept von Erweiterungen vertraut sind, finden Sie hier ein intro.)

Antworten auf die Frage(6)

Ihre Antwort auf die Frage