1초마다 로그를 찍는 함수를 각각 Invoke 방식과 Coroutine 방식으로 호출하는 예제이다.


void OnEnable()

{

InvokeRepeating("Func1", 0, 1.0f);

StartCoroutine(Func2());

}


void Func1()

{

Debug.Log("Invoke");

}


IEnumerator Func2()

{

while (true)

{

Debug.Log("Coroutine");

yield return new WaitForSeconds(1.0f);

}

}


컴포넌트가 활성화 됐을 때 Func1 과 Func2 를 각각 InvokeRepeating 과 StartCoroutine 으로 호출하고 있다.


이 상태에서 컴포넌트가 비활성화 되더라도 Func1 과 Func2 는 계속 수행된다. 단 게임 오브젝트가 비활성화되면 Coroutine 은 일시 정지하도록 되어 있기 때문에 Func2 는 수행되지 않고 Func1 은 여전히 호출된다.


다시 컴포넌트가 활성화가 됐다고 해보자. 결과는 Func1 과 Func2 가 매번 두 번씩 중복 호출된다. Invoke 혹은 Coroutine 모두 같은 함수에 대해 개별적인 호출로 본다.


이렇게 중복 호출되는 것을 막기 위해서 OnDisable 을 아래처럼 구현해주면 된다.


void OnDisable()

{

CancelInvoke();

StopAllCoroutines();

}


CancelInvoke 와 StopAllCoroutines 는 "현재 컴포넌트"에 존재하는 모든 Invoke 및 Coroutine 을 종료시킨다.

'유니티 - 이것저것' 카테고리의 다른 글

유니티를 유니티답게 사용하려면  (3) 2016.06.08
에셋번들 기초  (0) 2016.02.04
에셋 기초  (0) 2016.02.01
Frustum Testing  (0) 2016.01.09
안드로이드에서 수동으로 프로파일러 Attach 하기  (0) 2016.01.08
Posted by 카코데몬
,

아래는 gmail 예제


var mail = new System.Net.Mail.MailMessage();

mail.From = new System.Net.Mail.MailAddress("내 메일@gmail.com");

mail.To.Add("상대방 메일@gmail.com");

mail.Subject = "제목";

mail.Body = "내용";


var client = new System.Net.Mail.SmtpClient("smtp.gmail.com");

client.Port = 587;

client.Credentials = new System.Net.NetworkCredential("내 메일@gmail.com", "암호");

client.EnableSsl = true;


client.Send(mail);

'C# - 이것저것' 카테고리의 다른 글

Type 관련 팁 몇 가지  (0) 2016.01.19
랜덤 열거형값 얻기 - Random Enum  (0) 2016.01.17
공백으로 문자열 분리하기  (0) 2016.01.16
Posted by 카코데몬
,

uGUI 에 Dropdown 이라는 컴포넌트가 추가됐다.


팝업메뉴에서 UI/Dropdown 으로 생성할 수 있다.



Options 에 항목을 추가하거나 제거할 수 있다. 스크립트로는 아래처럼 조작하면 된다.


List<Dropdown.OptionData> options = new List<Dropdown.OptionData>();


for (int i = 0; i < 10; ++i)

options.Add(new Dropdown.OptionData(i.ToString()));

boardSizeDropdown.options = options;


0부터 9까지의 숫자로 항목을 채우는 예제이다.

On Value Changed 에 함수를 등록해두면 다른 항목을 선택했을 때 함수가 호출되며 인자로 선택된 항목의 인덱스가 넘어온다. 만약 인덱스가 잘못 넘어온다면 콜백 등록시 Dynamic Paramet 가 아닌 Static Parameters 로 잘못 지정했는지 확인해보도록 한다.


Posted by 카코데몬
,