Unity 지연 실행 코드의 우아한 방식

2752 단어 unity
Unity에서는 코드나 방법 또는 몇 가지 방법을 지연시키는 경우가 매우 보편적이다.
일반적으로 Invoke 및 InvokeRepeating 방법이 사용됩니다.말 그대로 첫 번째는 한 번, 두 번째는 중복 집행이다.
다음 정의를 참조하십시오.
void Invoke(string methodName, float time);

 
첫 번째 파라미터는 방법명 (문자열 형식 주의) 이며, 더 편리한 의뢰가 아닙니다.두 번째는 몇 초 딜레이야?한 번만 실행합니다.
void InvokeRepeating(string methodName, float time, float repeatRate);

 
InvokeRepeating의 두 번째 매개 변수는 몇 초 지연 후 시작되는지, 세 번째 매개 변수는 매번 실행 간격의 초수입니다.
 
너는 이 두 가지 방법에 폐단이 있다는 것을 발견했니? 바로 반드시 방법명을 입력해야 한다는 것이다.즉, 만약 내가 어떤 코드를 집행할 시간을 늦추고 싶다면, 반드시 코드를 어떤 방법에 넣고, 이 Invoke 또는 InvokeRepeating 방법으로 집행해야 한다.
이렇게 하면 상하문 변수, 속성에 대한 인용이 특히 불편할 뿐만 아니라 파라미터를 전달할 수 없다!!!니마, 그에게 무슨 소용이 있겠는가?
 
나는 네가 반드시 이런 방법을 사용한 적이 있다고 추측한다.맞아,'협동', 꽤 높은 이름으로 들리네.
IEnumerator를 반환값으로 하는 방법을 Start Coroutine으로 실행합니다. 보통 비동기 다운로드에 사용되며, 시간이 많이 걸리고 게임 카드가 죽지 않는 경우에 사용됩니다.
또 하나의 좋은 종류인 WaitFor Seconds. 그래, 그것은 시간 지연에 사용되는 구조 함수이다.
자, 쓸데없는 소리 하지 마세요. 다음은 제가 직접 사용하는 시간 지연 방법입니다. 한 종류에 넣고 정적 방법으로 존재합니다.언제든지, 어디서든 시간을 지정할 수 있는 코드입니다.
using UnityEngine;

using System.Collections;

using System;



public class DelayToInvoke : MonoBehaviour

{



public static IEnumerator DelayToInvokeDo(Action action, float delaySeconds)

{

yield return new WaitForSeconds(delaySeconds);

action();

}

}

 
 
어떻게 사용하나요?
예를 들어 내가 NGUI의 Button을 클릭하면
void OnClick()

{

StartCoroutine(DelayToInvoke.DelayToInvokeDo(() =>

{

Application.LoadLevel(“Option”);

}, 0.1f));

}

 
봤지?
Application.LoadLevel(“Option”);실행을 지연시키려는 코드 세그먼트입니다.
너는 아주 길게 쓸 수 있다.Action, 마음대로 하세요.

좋은 웹페이지 즐겨찾기