인생언리얼 사이트에서 Btn_option.png 파일은 다운로드후 유니티 머터리얼 폴더에 드래그앤드롭 합니다.
https://cafe.naver.com/unrealunity/161
클릭해서 TextureType항목을 Sprite(2DandUI)/Simple로 변경한다. Apply를 눌러 반영시킵니다.
Canvas에 UI>Legacy>Button을 추가하고 이름은 Button_Option으로 변경 하고 Source Image에 Btn_option Sprite를 끌어다 놓습니다.
Anchor는 화면 우상에 배치하고 사이즈를 30,30으로 합니다.
색상은 검정색 반투명하게 합니다.
이제 옵션버튼을 클릭하면 표시될 창을 만들어 보겠습니다.
Canvas에 +-UI-Image를 추가하고 화면 전체를 차게 Stretch로 설정합니다. 옵션 배경 이미지 이름은 Option_Background로 변경합니다.
UI>Legacy>Button을 3개더 추가해서 Button_Resune, Button_Restart, Button_Quit으로 이름을 변경하고 옵션화면 타이틀 표시용으로 텍스트를 생성해서 이름을 Text_Option으로 변경합니다.
Panel_Options 빈오브젝트를 만들어 전체를 껏다켯다 할수 있게 합니다.
UI가 마련되었으니 GameManager.cs에서 로직을 만듭니다.
옵션 버튼이 눌리면 게임을 일시정지 시키고 옵션 패널을 활성화합니다.
일시정지 효과는 timeScale값을 0으로조절해 적용할수 있습니다.
우선 옵션버튼을 클릭하면 게임옵션 창을 켤 함수를 만듭니다.
public void OpenOptionWindow()
{
gameOption.SetActive(true);
Time.timeScale = 0f;
gState = GameState.Pause;
}
게임옵션창 Panel_Options를 연결할 gameOption 변수를 준비하고 창에 배치된 3개의 버튼과 연결할 함수를 마련합니다.
public GameObject gameOption;
생략
public void ClosedOptionwindow()
{
gameOption.SetActive(false );
Time.timeScale = 1f;
gState= GameState.Run;
}
public void RestartGame()
{
Time.timeScale = 1f;
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
public void QuitGame()
{
Application.Quit();
}
Button_Option 버튼 On_Click() + 를 누르고 하이라키의 GameManager 게임오브젝트를 끌어다 놓고 실행할 함수를 선택합니다. GameManager Script를 끌어다 놓으면 안됩니다.
Button_Resule
Button_Restart
Button_Quit
여기가지 해보고 플레이 한후 옵션 보튼을 클릭해보니까 버튼들이 비활성화 되서 눌리지가 않아요 Option_Background를 맨 위로 해주어야 합니다. 버튼들을 그 다음에 하구요 그러니까 버튼들도 하얗게 보이고 잘 눌려지네요
Button_Restart와 Button_Quit를 듀플리케이트해서 Text_GameState 자식으로 옮겨줍니다. 껏다켰다 하기 위해 Buttons라는 빈오브젝트를 만들어 줍니다. 듀플리케이트 했기 대문에 OnClick()함수는 이미 연결되어 있습니다. 버튼3개의 빈오브젝트 Buttons는 비활성화 해줍니다.
활성화는 Transform buttons = gameText.transform.GetChild(0); gameText의 자식오브젝트를 얻어 활성화 해주면 됩니다.
void Update()
{
// 만일, 플레이어의 hp가 0 이하라면...
if(player.hp <= 0)
{
생략
Transform buttons = gameText.transform.GetChild(0);
buttons.gameObject.SetActive(true);
// 상태를 "게임 오버" 상태로 변경한다.
gState = GameState.GameOver;
}
}
플레이 해보니 게임 종료시 버튼들이 잘 표시되는데 종료가 안되네요 구글링 해보니
Application.Quit()은 에디트런에서는 안 먹는 답니다. 안되는게 정상이네요 ㅎㅎ
'인생유니티 > FPS게임' 카테고리의 다른 글
로그인 화면과 비동기 씬로드 - 기능구성 코드 (0) | 2025.04.26 |
---|---|
로그인 화면과 비동기 씬로드 - 화면UI (0) | 2025.04.26 |
무기 모드 추가및 효과 적용 (0) | 2025.04.24 |
Navigation (0) | 2025.04.24 |
플레이어 애니메이션 (0) | 2025.04.23 |