Beachten Sie die beiden Erweiterungen, eine für Float, eine für Vector3.C# generisch mit kleinen Unterschied für Typen?
Beachten Sie, es gibt nur einen kleinen Unterschied in der var(
Anruf.
In C# könnten diese als eine wie eine generische ??
Das Wesen meiner Frage ist:
innerhalb eines generischen, können Sie Zweig auf die Art des Typ?
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);
}
(BTW für alle # Gurus c lesen, ist das Codebeispiel in Unity, in dem Sie das Rahmensystem in einem Koroutine zuzugreifen.)
Für alle Unity Devs Lesen, Beispiele dafür, wie Sie rufen Tweeng
// 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 neu sind und nicht mit dem Grundkonzept von Erweiterungen vertraut, hier ist ein intro.)
Ja, Sie könnten ein generisches Argument 'T' (' float'/'Vector3') hinzufügen und dann' Lerp/SmoothStep' als 'Func' –
Rob
ah, im Grunde ein weiteres Argument hinzufügen. Es wäre toll, wenn die Erweiterung es herausfinden würde. Ich denke, man könnte diese Division auf eine andere generische Funktion drücken. – Fattie