멍멍이네 블로그

NGUI 사용하고있어서 NGUI기능 중 PlaySound를 쓰는데
Loop 이랑 Stop이 없네요ㅜㅜ
NGUI 기능 내에서 처리하고 싶은데... Loop이랑 Stop 사용방법좀 가르쳐주세요~~

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

[답변]

 저도 NGUI를 사용하는데~ play사운드는 사용하는데 좀 불편한거 같아서~
빈 오브젝트를 생성하고 오디오 리스너를 가지고 다니면서 씬마다 지워지지 않게끔하고
스크립트를 작성해서 사운드를 출력해주는 식으로 하고 있습니다.
그래서 오디오 Source 안에있는 loop나 Stop도 손쉽게 쓸수 있게 만들었습니다.

결론은, 저거 저도 써봤는데 별로 막 좋은거 못느껴서..
아마 스크리트를 손보시거나 새로 하나 만들어서 쓰심이 나을듯 해요 갠적으로는 그럽니다.

 

p.s. NGUITools를 뒤져서 PlaySound메소드를 들어가서 뒤져보고 질문한거였는데..

답변도 그렇고.. PlaySound는 그냥 자체 AudioSource를 이용해서 Play, Stop 해야겠당..

상위 오브젝트를 호출하는 방법 -> childObject.transform.parent

상위 오브젝트 밑에 만들기! -> childObject.transform.parent = parentObject.transform;

 

void CreateObject(){

GameObject ChildObject; // 하위오브젝트

GameObject ParentObject; // 상위오브젝트

GameObject NonObject = Instantiate(ChildObject); // 하위오브젝트 생성

NonObject.transform.parent = ParentObject.transform; // 하위오브젝트의 상위객체로 상위오브젝트를 연결

}

VSync 가 주 원인이란말 듣고 끄니까 좀 렉이 덜하는데... 밑에 사진과 같이 중간중간에 MeshCount도 증가하고.. 뛰고 하는 부분이 있는데.. 속도를 잘 모르긴 하는데.. 사진을 보면 안끊기는거처럼 보이는데 막상 실행시키면 끊김이 눈에 조금씩 보이는지라..
이동오브젝트의 스크립트를 모두 꺼버렸구요,
생성된 오브젝트는 Update에서 transform.localPosition = new Vector3()로 이동합니다.
현재 기준 오브젝트에서 화면밖까지 가는데 오브젝트가 15개정도 먹혀서.. Pool로 20개정도 만들고 미리 만들어놓고 False하고있습니다.
CPU Usage는 GfxWaitForPresent에서 거의 80~90% 먹히고,
GPU는 Draw에서 65% RenderTexture.SetActive에서 35%정도 먹힙니다;;


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

[답변 정리!]

다른 질문과 조금 동일하기때문에 정리하자면...

VSync의 설정을 바꿔주면 1차적으로 조금 줄어든다(대신 배터리 사용량이 늘어난다는 말이 있던데 정확히는 모름!)

그리고 가비지컬렉션문제와 동일한데..

동적할당을 하면서 힙메모리가 가득차기 때문에 끊김이나 툭툭튀는현상이 발생!

= new 같은건 사용을 자제하면서 특히 Update메소드에서 호출하는건 자제하도록!