來自iOS背景我很努力地將簡單的GameObject從A移動到B。 有沒有什麼像animateWithDuration(duration: NSTimeInterval, animations:() -> Void, completion: ((Bool) -> Void)?)
Unity animateWithDuration相當於,將gameobject設置爲位置
我認爲這是不方便更改更新轉換。我無法使用動畫視圖和動畫製作器,因爲無法使用此工具更改目標位置。
來自iOS背景我很努力地將簡單的GameObject從A移動到B。 有沒有什麼像animateWithDuration(duration: NSTimeInterval, animations:() -> Void, completion: ((Bool) -> Void)?)
Unity animateWithDuration相當於,將gameobject設置爲位置
我認爲這是不方便更改更新轉換。我無法使用動畫視圖和動畫製作器,因爲無法使用此工具更改目標位置。
從iOS背景的也 我建議如下:
class AnimationModule: MonoBehaviour
{
public delegate void AnimationBlock(float progress);
public Task animateWithDuration(float duration, AnimationBlock animation, Action completion)
{
StartCoroutine(coroutine__animation(duration, animation, delegate
{
completion();
}));
return Task.Delay(millisecondsDelay: (int)(duration * 1000));
}
private IEnumerator coroutine__animation(float duration, AnimationBlock animation, Action completion)
{
float startingTime = Time.time;
float timeCounter = startingTime;
while (timeCounter < (startingTime + duration))
{
float p = (timeCounter - startingTime)/duration;
animation(p);
timeCounter = Time.time;
yield return null;
}
completion();
}
}
其將被這樣使用:
Task anim1 = GetComponent<AnimationModule>().animateWithDuration(duration: 2.0f, animation: (float p) => {
card.transform.localPosition = position_from + p * (new Vector3(100, 0, 0));
}, completion:() => {
Debug.Log("animateWithDuration, completion");
});
鑑於重要的是,要回答這個問題,就是要接近iOS風格。
它的工作原理,但我不知道它的性能表現是否良好。
我使用實驗單音以便使用Task
等。