unity遅延実装の詳細な説明
]ゲームフローの管理、イベントの並べ替え、実世界の動作のシミュレーションには、団結の遅延を作成することが不可欠です。遅延を達成するためのいくつかの方法があります:
1。
startcoroutine
waitforseconds
:指定された時間(ゲーム速度の影響を受ける)の間実行を一時停止します。 waitforsecondsrealtime
:指定された時間(ゲーム速度の影響を受けない)の間実行を一時停止します。 例:
2。
IEnumerator WaitForSecondsExample()
{
// 旋转90度
transform.Rotate(Vector3.right * 90);
// 等待4秒(不受游戏速度影响)
yield return new WaitForSecondsRealtime(4);
// 旋转40度
transform.Rotate(Vector3.right * 40);
// 等待2秒(受游戏速度影响)
yield return new WaitForSeconds(2);
// 旋转20度
transform.Rotate(Vector3.right * 20);
}
またはfor loop of
:希望の値に達するまでタイマーを徐々に増やします。
evell return null
:1つのフレームの実行を一時停止します。
ienumerator timebasedloopexample()
{
// 90度回転します
transform.rotate(vector3.right * 90);
// 4秒待つ(ゲーム速度の影響を受ける)
フロートタイマー= 0;
while(タイマー 3。
IEnumerator TimeBasedLoopExample()
{
// 旋转90度
transform.Rotate(Vector3.right * 90);
// 等待4秒(受游戏速度影响)
float timer = 0;
while (timer
:条件が真になるまで実行されない。
waitwhile
:条件が真の場合に実行されます。
ienumerator waituntilexample()
{
//プレイヤーのスコアが100に達するのを待ちます
hired return new waituntil(()=> playerscore> = 100);
//次のレベルをロードします
scenemanager.loadscene( "nextlevel");
} 4。
:指定された遅延後に実行する関数をスケジュールします。
IEnumerator WaitUntilExample()
{
// 等待玩家分数达到100
yield return new WaitUntil(() => playerScore >= 100);
// 加载下一关
SceneManager.LoadScene("NextLevel");
}
: invoke に似ていますが、関数は指定された時間間隔で繰り返し呼ばれます。
invoke( "feeddog"、5);
invokerepeating( "MovePlayer"、0.5F、0.2F);
]
time.deltatime
:フレーム間の時間を測定するために使用されます。
の場合
Invoke("FeedDog", 5); // 5秒后调用FeedDog()
InvokeRepeating("MovePlayer", 0.5f, 0.2f); // 每0.2秒调用MovePlayer(),持续0.5秒。
例:
あなたの問題を解決する:
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3