2013-01-25 4 views
1

Android 용 2D 퍼즐 게임을 만들고 디자인 결정에 커뮤니티의 의견을 듣고 싶습니다. 기본적인 디자인은 이것입니다. 2d 그래픽이 백그라운드 스레드에서 그려지는 SurfaceView가 있습니다. 그런 다음 표면 뷰를 오버레이하는 RelativeLayout도 있습니다. 레이아웃 .XML은 다음과 같습니다Android 2D 게임 아키텍처

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/root" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:gravity="center" > 
<SurfaceView 
    android:id="@+id/game_surface" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" /> 
<RelativeLayout 
    android:id="@+id/game_overlay" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" /> 
</RelativeLayout> 

모든 터치 이벤트가 game_overlay 수신되며, 필요에 따라 게임 스레드에 연결됩니다. LayoutInflater를 사용하여 레이아웃을 확장하고이를 game_overlay에 배치 한 다음 필요한 경우 game_overlay를 지 웁니다. 일을하는 것에 대한 나의 이성적인 생각은 당신이 두 세계에서 최고의 것을 얻는다는 것입니다. 캔버스에 사용자 정의 버튼을 그리지 않아도 (재설정 레벨 버튼과 마찬가지로), 강력한 Android 레이아웃 기능을 활용할 수 있습니다. 그러나 백그라운드에서 게임 렌더링을 수행하고 스레드가 항상 살아 있도록 할 수 있습니다.

이제 내 질문에. 당신이 전에 당신의 경험을 듣고 싶습니다. 이와 같이 레이어 뷰에 성능 저하를 기대할 수 있습니까? 더 중요한 것은 성능 저하가 앱의 프레임 속도에 해롭다는 것입니다. 이 접근법에 다른 문제가 있습니까?

답변

0

게임 성능을 향상 시키려면 스마트 장치 용으로 최소 버튼을 유지해야하며, 게임 플레이를위한 터치 입력에 의존하십시오. 커스텀 버튼에 대해서는 내가 동의하지 않습니다. 또한 버튼을 직접 사용하는 것이 시각적으로 더 좋습니다. 그것은 당신의 게임을 멋지게 만듭니다. 그리고 네 질문에 네가 불필요한 캡슐화를 피해야한다. 하지만 거대한 성능 문제가 발생할 것이라고 나는 생각하지 않습니다. 표면에 대한 유용한 자습서가 될 수 있습니다. click me