"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 게임 플레이 및 이벤트 시퀀싱을위한 Unity 지연을 구현하는 방법은 무엇입니까?

게임 플레이 및 이벤트 시퀀싱을위한 Unity 지연을 구현하는 방법은 무엇입니까?

2025-02-06에 게시되었습니다
검색:311

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

Unity 지연 구현에 대한 자세한 설명

]

게임 흐름을 관리하고, 이벤트를 정렬하고, 실제 행동을 시뮬레이션하는 데 통일 지연을 만드는 것이 필수적입니다. 지연을 달성하는 몇 가지 방법은 다음과 같습니다.

1 waitforseconds /&] waitforsecondsrealtime ]

  • startCoroutine : 코 루틴 함수를 선언합니다.
  • waitforseconds : 지정된 시간 동안 실행을 일시 중지합니다 (게임 속도에 의해 영향을 받음).
  • waitforsecondsRealtime : 지정된 시간 동안 실행을 일시 중지합니다 (게임 속도의 영향을받지 않음).

예:

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);
}

2 시간 기반 루프

  • 또는 또는 루프의

수율 리턴 null

: 한 프레임의 실행을 일시 중지합니다.
IEnumerator TimeBasedLoopExample()
{
    // 旋转90度
    transform.Rotate(Vector3.right * 90);

    // 等待4秒(受游戏速度影响)
    float timer = 0;
    while (timer 
예:

ienumerator timebasedloopexample () { // 90도 회전합니다 transform.rotate (vector3.right * 90); // 4 초 동안 기다립니다 (게임 속도의 영향) 플로트 타이머 = 0; while (타이머

3
  • / 기능 기능 ]
  • : 조건이 참을 때까지 실행이 중단되지 않습니다.

기다려서

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

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

예: ienumerator waituntilexample () { // 플레이어의 점수가 100에 도달 할 때까지 기다립니다 수율은 New Waituntil ((() => playerscore> = 100)를 반환합니다. // 다음 레벨을로드합니다 scenemanager.loadscene ( "Nextlevel"); }

  • 4.
  • : 지정된 지연 후 실행할 함수를 예약합니다. invokerepeating
  • :
invoke

와 유사하지만 그 함수는 지정된 시간 간격에서 반복적으로 호출됩니다.

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

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

호출 ( "FeedDog", 5); InvokerePeating ( "MovePlayer", 0.5f, 0.2f); ]]] 5.

time.deltatime
  • : 프레임 사이의 시간을 측정하는 데 사용됩니다. 타이머 변수 : 원하는 값에 도달 할 때까지 각 프레임을 증가시킵니다.
  • if
  • statement
  • : 타이머가 필요한 값에 도달하고 필요한 코드를 실행하는지 확인하십시오.
  • 예:

void update () { 타이머 = time.deltatime; if (타이머> = 5) { // 5 초 후에 코드를 실행합니다 타이머 = 0; feeddog (); } }

void Update()
{
    timer  = Time.deltaTime;

    if (timer >= 5)
    {
        // 5秒后执行代码
        timer = 0;
        FeedDog();
    }
}

스크립트에 텍스트를 표시 할 때 지연을 만들려면 다음 코드를 사용할 수 있습니다.

ienumerator showtextwithdelay () { TextUi.text = "디지털 마법사에 오신 것을 환영합니다!"; 수율은 새로운 Waitforseconds (3F)를 반환합니다. textUi.text = ( "선택할 수있는 가장 높은 숫자는"max); 수율은 새로운 Waitforseconds (3F)를 반환합니다. textUi.text = ( "선택할 수있는 가장 낮은 숫자는"min); } STARTCOROUTINE (showTextWithDelay ());

            
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3