我想在影片結束后啟動函式 StartGame()。我有這個功能:
using UnityEngine;
public class DominoAnimation : MonoBehaviour
{
private Vector2 startPos = new Vector2(11f, 0f);
public Vector2 endPos;
private float step = 0.03f;
private float progress;
private bool isAnimationEnd = false;
public delegate void Event();
public event Event onAnimationEnd;
private void FixedUpdate()
{
if (progress >= 1f && !isAnimationEnd)
{
GetComponent<SpriteRenderer>().color = new Color(0.5f, 0.5f, 0.5f);
isAnimationEnd = true;
onAnimationEnd();
}
transform.position = Vector2.Lerp(startPos, endPos, progress);
progress = step;
}
}
當fixedUpdate中的函式完成時,我想在另一個類中啟動另一個函式:
public class OnlineGame : MonoBehaviour
{
private void StartGame()
{
// Starting game
if (DataController.MaxPlayerDomino[0] > DataController.MaxEnemyDomino[0])
{
DataController.move = true;
domino[DataController.MaxPlayerDomino[1]].GetComponent<SpriteRenderer>().color = new Color(1f, 1f, 1f);
}
else DataController.move = false;
// Else not one have double
}
}
我嘗試通過一個事件來做到這一點,但由于對 DominoAnimation 類的參考不起作用,我得到了一個錯誤
uj5u.com熱心網友回復:
您可以使用 IEnumerator 等到 isAnimationEnd 為真,如下所示:
private IEnumerator StartGame()
{
yield return new WaitUntil(() => DominoAnimation.instance.isAnimationEnd);
// Starting game
if (DataController.MaxPlayerDomino[0] > DataController.MaxEnemyDomino[0])
{
DataController.move = true;
domino[DataController.MaxPlayerDomino[1]].GetComponent<SpriteRenderer>().color = new Color(1f, 1f, 1f);
}
else DataController.move = false;
// Else not one have double
}
并將此函式稱為 StartCoroutine(OnlineGame.instance.StartGame());
不要忘記公開類和方法的實體,您可以在另一個類上呼叫它們。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/408559.html
標籤:
上一篇:將影片師添加到實體化的預制件?
下一篇:更新我的專案后,我在這個腳本中不斷收到Identifierexpected和Typeexpected錯誤。錯誤都在第29行
