XNA 게임은 내용을 언로드해야하는 Unload()
메서드가 있습니다. 그러나 이것의 요점은 무엇입니까? 모든 콘텐츠가 언로드되면 게임이 종료되어야합니다.이 경우 어쨌든 모든 것이 가비지 수집됩니다. 맞습니까?XNA : Unload()의 요점은 무엇입니까?
답변
가비지 컬렉터가 당신에게 필요한 것을 다루기 때문에 표준적인 용도로는 유용하지 않습니다.
그러나 게임이 여러 가지 이유로 종료 될 때 호출되는 이벤트가있는 것이 유용합니다. 예를 들어, 멀티 플레이어 게임에서 모든 클라이언트에게 종료 중이라는 메시지를 보낼 수 있습니다. 그런 다음 가비지 수집기에서 네트워크 연결을 끊을 수 있습니다.
너 자신 후에 청소하는 것은 항상 예의입니다 ... 그렇지 않으면 사람들은 당신이 장난감으로 놀게하는 것을 멈추게됩니다.
내 생각 엔 Game
개체를 프로젝트에 중첩시키고 나중에이를 정리할 수있는 방법을 제공하는 것입니다. 이렇게하면 코드를 더 잘 재사용 할 수 있습니다. 다행히 XNA MPV 또는 XNA 팀의 누군가가이를 찾아보다 많은 통찰력을 제공합니다.
"게임"객체의 "다음"이란 의미는 무엇입니까? –
그것은 내가 뚱뚱한 손가락으로 말한 '둥지'를 의미합니다 ... 고마워, 고칠 것입니다. –
그다지 유용하지는 않습니다. 일단 게임 개체가 가비지 수집되면 콘텐츠 관리자가 수집되어 관리하는 모든 콘텐츠가 수집됩니다. – Martin
때때로 가비지 수집기를 통해 언로드되지 않는 라이브러리를 사용하여 작업 할 때 언로드가 필요한 경우가 있습니다. 한 가지 예가 XACT입니다. 개체가 GC에 의해 파괴되지 않는 특정한 경우에 언로드 이벤트에서 XACT 음악을 담당하는 개체를 파괴해야한다는 것을 기억합니다 ... 그러나 실제 시나리오를 잊어 버렸습니다 ...
그러나 더 중요한 것은 Game 클래스 대신 GameComponent 클래스의 UnloadContent 메서드. 일반적으로 GameComponent 및 DrawableGameComponent 객체는 여러 리소스를 사용할 수 있습니다. 오브젝트가 파기되면 오브젝트와 관련된 모든 자원이 파기되거나 해제되거나 보류 상태에 놓일 수 있는지 확인해야합니다.
나는 지금 당장 떠나 주시기 바랍니다. XNA 개발 및 대형 프로젝트의 경우 Unload 메서드를 사용해야하고 필요할 경우 특정 사례를 이해해야 할 수 있습니다.
- 1. make_heap의 요점은 무엇입니까?
- 2. 스캐 폴딩의 요점은 무엇입니까?
- 3. WCF의 요점은 무엇입니까 MaxReceivedMessageSize
- 4. 웹 서비스의 요점은 무엇입니까?
- 5. XPointer 범위의 요점은 무엇입니까?
- 6. CodeSmith에서 ParameterSchema.AllowDBNull의 요점은 무엇입니까?
- 7. Html.DisplayTextFor()의 요점은 무엇입니까?
- 8. Ingalls 테스트의 요점은 무엇입니까?
- 9. ObjectDataSource의 요점은 무엇입니까
- 10. os.error의 요점은 무엇입니까?
- 11. IClassFactory :: LockServer의 요점은 무엇입니까?
- 12. @property와 @synthesize의 요점은 무엇입니까?
- 13. 콩의 요점은 무엇입니까?
- 14. 패딩의 요점은 무엇입니까?
- 15. crossdomain.xml 요점은 무엇입니까?
- 16. 표현식 트리의 요점은 무엇입니까?
- 17. 패키지 주석의 요점은 무엇입니까?
- 18. JAAS의 요점은 무엇입니까
- 19. 번들 패키지의 요점은 무엇입니까?
- 20. gtk에서 alloc_color()의 요점은 무엇입니까?
- 21. LinqToSQL 내의 DatabaseAttribute의 요점은 무엇입니까?
- 22. 파이썬 달걀 파일의 요점은 무엇입니까?
- 23. JComboBox의 getSelectedItem()의 요점은 무엇입니까?
- 24. EC2에서 인스턴스 저장소의 요점은 무엇입니까?
- 25. XML에서 "ID"태그의 요점은 무엇입니까?
- 26. ScriptManager의 EnablePartialRendering 속성의 요점은 무엇입니까
- 27. 장고의 특성 캐시 - 요점은 무엇입니까?
- 28. clojure에서 lazy-seq의 요점은 무엇입니까?
- 29. CSS 접기 마진의 요점은 무엇입니까?
- 30. Java EE의 Facade의 요점은 무엇입니까?
프로그램을 닫을 때 모든 개체가 언로드되기 때문에 'IDisposable.Dispose()'또는 'using (...)'을 사용하면 안됩니다. –
좋은 지적입니다. – Martin
보호 된 Game1.OnExiting 이벤트 메서드를 재정 의하여이를 수행 할 수도 있습니다. OnExiting을 사용하여 예를 들어 게임 종료시 메시지를 보내는 것이 더 합리적입니다. –