B6gn6c1ft7fihxnjyvp1
장지원
  • 2016.6.11 23:44
  • 조회수 174
  • 답변수 1
B6gn6c1ft7fihxnjyvp1
장지원
  • 2016.6.11 23:44
  • 조회수 174
  • 답변수 1

SendMessage에 대해서 질문드립니다.

성능 상 문제로 유니티 개발자 분들은 SendMessage를 되도록 쓰지 않고

델리게이트나 이벤트를 쓰는 분위기고, 또한 강좌에선 Find계열의 메서드도

쓰시는데, Find계열은 성능 최악이라 자제하는 분위기 더라구요..

아직 초보 개발자라 어느 정도가 적정선인지 가늠할 수가 없네요.

게임 개발을 대, 중, 소로 봤을 때, SendMessage와 Find계열 메서드의

사용 빈도를 알고 싶습니다. 아예 안 쓰고 다른 걸로 애초에 버릇을

들이는 건 어떤가요? 수고 하십시요(__)

  • #Unity로 배우는 C#
  • #코인 갯수 세기

1 답변

  • G3rlasealonpd5c2kica
    Demi
    • 2016.6.13 10:34

    게임별 sendMessage와 find계열 메소드의 정확한 사용 빈도는 알 수 없지만, unity wiki - General Performance Tips 에서는 해당 메소드를 사용하지 않는 것을 권장하고 있습니다.
    다만 tryehelloworld는 퍼포먼스보다는 개념이나 사용법을 익히는데 중점을 두고 있기 때문에 해당 메소드를 강의에 넣었습니다.

    Don't use methods which search for objects any more than is necessary. This includes methods such as GameObject.FindByTag() and GameObject.GetComponent(), as well as all the component convenience properties (transform, light, etc.). These methods are optimised to operate as quickly as possible, but they still have to search through all the relevant objects to find the one you want. The most important thing is to avoid calling search methods repeatedly in Update() or FixedUpdate(). Instead, call the method once, store its result in a member variable of your class, and then use the member variable to access it the next time you need it.

    Don't use SendMessage() (or similar functions) if you don't have to. SendMessage() is at least 100 times slower than calling a function directly, and this number increases as more scripts and functions are available on the object. If you can find the script you need ahead of time, do so and then call the function directly.

    • 아~ 역시 그렇군요^^ 좋은 좌표도 알려주시고, 정확한 정보 알려주셔서 감사합니다(__) 늘 행복하세요^^-장지원
      2016.6.13 12:40

답변 쓰기

이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.