「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > ゲームプレイとイベントシーケンスのためにUnityの遅延を実装する方法は?

ゲームプレイとイベントシーケンスのためにUnityの遅延を実装する方法は?

2025-02-06に投稿しました
ブラウズ:557

How to Implement Delays in Unity for Gameplay and Event Sequencing?

unity遅延実装の詳細な説明

]

ゲームフローの管理、イベントの並べ替え、実世界の動作のシミュレーションには、団結の遅延を作成することが不可欠です。遅延を達成するためのいくつかの方法があります:

1。 startcoroutine

:coroutine関数を宣言します。
  • waitforseconds :指定された時間(ゲーム速度の影響を受ける)の間実行を一時停止します。
  • waitforsecondsrealtime :指定された時間(ゲーム速度の影響を受けない)の間実行を一時停止します。
  • 例:
ienumerator waitforsecondsexample() { // 90度回転します transform.rotate(vector3.right * 90); // 4秒待つ(ゲーム速度の影響を受けない) 獲得したreturn new waitforsecondsrealtime(4); // 40度回転します transform.rotate(vector3.right * 40); // 2秒待つ(ゲーム速度の影響を受ける) earde return new waitforseconds(2); // 20度回転します transform.rotate(vector3.right * 20); }

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。
invoke

:指定された遅延後に実行する関数をスケジュールします。

IEnumerator WaitUntilExample()
{
    // 等待玩家分数达到100
    yield return new WaitUntil(() => playerScore >= 100);

    // 加载下一关
    SceneManager.LoadScene("NextLevel");
}

invoke に似ていますが、関数は指定された時間間隔で繰り返し呼ばれます。

例:
  • invoke( "feeddog"、5); invokerepeating( "MovePlayer"、0.5F、0.2F); ]
  • 5。
  • time.deltatime :フレーム間の時間を測定するために使用されます。
  • タイマー変数
:目的の値に達するまで各フレームを増やします。

の場合
Invoke("FeedDog", 5); // 5秒后调用FeedDog()

InvokeRepeating("MovePlayer", 0.5f, 0.2f); // 每0.2秒调用MovePlayer(),持续0.5秒。

例:

void update() { Timer = time.deltatime; if(タイマー> = 5) { // 5秒後にコードを実行します タイマー= 0; feeddog(); } }
  • あなたの問題を解決する:
  • スクリプトにテキストを表示するときに遅延を作成するには、次のコードを使用できます。
  • ienumerator showtextwithdelay() { textui.text = "デジタルウィザードへようこそ!"; edvey return new waitforseconds(3f); Textui.text =( "選択できる最高の数字は" max); edvey return new waitforseconds(3f); textui.text =( "選択できる最低数は" min); } startcoroutine(showtextwithdelay());
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3