멍멍이네 블로그

Coroutine에서 bool을 이용해서 대기했다가 특정조건에 사용하는방법을 알고 싶어요
제가 2일전에 Coroutine 사용했을땐
yield return (bool 자료형 변수 = false);
Debug.Log(bool 자료형 변수값 );
라고 해두면
버튼을 클릭해서 변수값을 true로 바꿔주기전엔 Debug가 안찍혔던거 같은데;
잘되길래 놔뒀다가..
이번에 쓰려고 하는데 bool 자료형 변수가 값이 false인데 자꾸 넘어가네요..(Debug도 false로 찍힙니다)
사용법이 잘못된건지..
아니면 다른 사용법좀 가르쳐주십사 합니다.

--------------------------------------------------------------------------------------------

[답변]

IEnumerator test()
{
while(조건검사)
{
yield return null;
}

실행..
}

 

p.s. 결론은.. 조건대기할거면 그냥 Update를 쓰자..

처음 coroutine을 쓸땐 yield return bool변수의 false로 놔두면 대기했다가.. true로 바꾸면 그때 시작되는거 같았는데.. 잘못봤나보다.. 아니면 가능한지.. 이글을 보시는분 아시면 댓글좀! 

NGUI로 AddChild 할때 생성되는 오브젝트에게 값을주는방법이 궁금합니다.
서로 상하위 객체로 연결하지 않고 같은 패널 내 동등한 위치로.. 동일한 이름으로 여러개 생성할 생각입니다.
SendMessage로 오브젝트의 이동방향과 생성할오브젝트의 초기위치값을 보내줬는데..
SendMessage로는 하나의 자료형만을 보낼수 있어서..
예를들면 Vector3와 int와 string의 자료형의 값들을 주고싶은데 ...
어떻게해야될까요? ㅜ

---------------------------------------------------------------------------------

[답변]

AddChild()의 리턴값이 생성된 GameObject 입니다.
GameObject를받은 후, GetComponent등으로 스크립트를 직접 가져와서 제어하시거나 하는게 낫지 않을까요.

GameObject goChild = NGUITools.AddChild(PanelObject, ChildObject);
UserScript userScript = goChild.GetComponent<UserScript>();
userScript.Initialize(v);

이런식으로..

 

p.s. NGUITools.AddChild의 return값은 GameObject형이다!

아까 질문 올렸다가 자삭했습니다.
현재 생긴 문제가 UISpriteAnimation을 이용해서 SpriteAnimation을 줬는데요..
코드로 Sprite 이름을 바꿔준다던지.. 해서 재생할 SpriteAnimation 이름을 조절했는데..
문제는 제가 Setting에서 오브젝트 크기(localScale)과 SpriteName을 바꿔주는데..
Update문이 끝나고 나서 SpriteAnimation에 의해서 이미지가 바뀌면서 오브젝트 크기가 다시 1로 돌아옵니다.
Update(){
//크기변동
}
//원래 크기로 돌아옴
Update(){
//크기변동
}
//원래 크기로 돌아옴
이렇게 됩니다..
SpriteAnimation 크기조절도 가능한지..
아님 다른 해결방법을 알고 싶습니다.
꼭 코드에서 재생할 SpriteAnimation의 이름. atlas를 바꿔야 되구요..
Unity3D + NGUI 를 사용중입니다.

------------------------------------------------------------------------------------------

 [답변]

SpriteAnimation 코드 안에서 이미지가 변경될경우..
Make pixel perfect 인가를 호출하는걸로 알고 있습니다.
요것이 sprite의 이미지의 크기를 원래의 사이즈로 만드는 함수인데요~

요녀석을 주석을 시켜 버리시거나..

애니메이션의 사이즈를 애초에 작은 사이즈로 재생을 시켜야 될 경우에는

부모 오브젝트의 사이즈를 줄이시면 될것으로 압니다~ -> 제생각..;

ex > 하이라키 계층 구조에서

빈 게임 오브젝트를 생성하셔서
ㄴ Gameobject - > scale 0.7, 0.7, 1 이런식..
ㄴ 재생될 spriteAnimation

 

p.s. UISprite 스크립트가서 자체 수정을 했는데..

이미지를 맞춰서 세팅을 하던지.. 아니면 다른사람들 말처럼.. UISprite의 MakePixelPerfect() 메소드를 수정해서 쓰자! ( 내맘대로 수정함ㅋ )