WaitForSeconds()
/* 유니티를 하면서 여기저기 해외 동영상 강좌도 보고 따라하고 있습니다만 그래도 자바스크립트보단 C#이 간지 있어 보이는거 같아서 C#으로 스크립트를 만들어 보고 있긴한데 어째 자바 스크립트 보단 많이 불편한거 같은 느낌이 드는건 나만의 착각일까요... 그 일례로 WaitForSeconds()함수를 사용하면서 삽질한걸 한번 끄적여 보겠습니다.*/
스크립트 레퍼런스에 나온 설명입니다.
static function WaitForSeconds (seconds : float) : WaitForSeconds
Description
Creates a yield instruction to wait for a given number of seconds
C#
using UnityEngine;
using System.Collections;
public class example : MonoBehaviour
{
public IEnumerator Awake()
{
print(Time.time);
yield return new WaitForSeconds(5);
print(Time.time);
}
}
근데 예제에 저런식으로 썼다가 개코피 터집니다 -ㅅ-;;; 한시간 정도 삽질했네요
구문은 맞는데 일반 함수를 그냥 사용할려고 하면 조금 변형을 가해줘야 됩니다.
public class myCreator : MonoBehaviour
{
public GameObject box;
public bool readynow = false;
// Use this for initialization
void Start ()
{
}
// Update is called once per frame
void Update ()
{
if( readynow == true )
{
StartCoroutine( MakeBox() );
}
}
IEnumerator MakeBox()
{
readynow = false;
Instantiate( box, transform.position, transform.rotation );
yield return new WaitForSeconds(0.01f);
readynow = true;
}
}
보시면 아시겠지만 StartCoroutine()함수를 사용해서 해주어야 에러가 나질 않아요~
저거 찾는다고 아놔 -ㅅ-;
더불어서 StartCoroutine()함수 스크립트 메뉴얼도 보시겠습니다.
function StartCoroutine (routine : IEnumerator) : Coroutine
Description
Starts a coroutine.
The execution of a coroutine can be paused at any point using the yield statement. The yield return value specifies when the coroutine is resumed. Coroutines are excellent when modelling behaviour over several frames. Coroutines have virtually no performance overhead. StartCoroutine function always returns immediately, however you can yield the result. This will wait until the coroutine has finished execution.
When using JavaScript it is not necessary to use StartCoroutine, the compiler will do this for you. When writing C# code you must call StartCoroutine.
using System.Collections;
public class example : MonoBehaviour {
void Start() {
print("Starting " + Time.time);
StartCoroutine(WaitAndPrint(2.0F));
print("Before WaitAndPrint Finishes " + Time.time);
}
IEnumerator WaitAndPrint(float waitTime) {
yield return new WaitForSeconds(waitTime);
print("WaitAndPrint " + Time.time);
}
}
using System.Collections;
public class example : MonoBehaviour {
IEnumerator Start() {
print("Starting " + Time.time);
yield return StartCoroutine(WaitAndPrint(2.0F));
print("Done " + Time.time);
}
IEnumerator WaitAndPrint(float waitTime) {
yield return new WaitForSeconds(waitTime);
print("WaitAndPrint " + Time.time);
}
}
Update쪽은 이런식으로 처리 되는지 안되는지 확인을 못해봤으니 그건 직접해보시길~~
'Unity3D > Script' 카테고리의 다른 글
특정시간 뒤에 함수 호출하도록 설정하기 (WaitForSeconds) (0) | 2012.11.21 |
---|---|
AnimationEvent 추가 방법 (0) | 2012.11.21 |
Attributes 설명 모음 (0) | 2012.11.18 |
애니메이션 스크립팅(Animation Scripting) (2) | 2012.11.16 |
FadeInOut (0) | 2012.10.31 |