목차
멋쟁이사자처럼 로켓단 인턴쉽
25.08.28
회의록
>> 안건
- 업무 업데이트
- 질문 혹은 피드백 요청
- 주요 안건
- 앱 출시(앱 등록)
- 밸런싱 회의
>> 회의 내용
- 3차 밸런싱 회의
: PC플레이와 모바일 플레이 환경간의 난이도 체감 격차가 달라 재 밸런싱.
--> 모바일이 서비스 되는 게임이므로 모바일을 기준으로 밸런싱한다.
- 단계에 따라 피버로 얻는 일과시간 조정 : (기존) 1/1/2/2/3 --> (변경) 1/1/1/1.5/2
- (모바일)후반 피버타임의 밸류가 너무 높아서 피버타임 발동 시 얻는 일과시간의 값을 개별로 다루어 고정시키기로 함.
- 앱 출시는 멋사측의 다음 절차를 기다리는 중
▶ 이제 정말 완성이 얼마 안 남았다.
앱이 백그라운드 상태일 때 Audio Mute
: 모바일로 게임을 플레이하는 중에 앱이 백그라운드 상태가 될 때, 모든 Audio를 Mute 시키고 다시 게임으로 돌아왔을 때 기존에 유저가 설정한 상태 그대로 복귀
--> OnApplicationPause()를 활용하여 구현
※ OnApplicationPause vs OnApplicationFocus
- OnApplicationPause : 앱이 일시정지 상태면 True, 재생 상태면 False ex) 홈 버튼, 다른 앱 전환, 화면 꺼짐 등
- OnApplicaitonFocus : 게임 객체에 Focus가 있으면 True, 그렇지 않으면 False ex) 알림창 내려옴, 다른 앱이 잠깐 위로 뜸
▶ 모바일 환경에서 가장 확실하게 동작하는 이벤트는 OnApplicationPause()기 때문에 이를 활용하여 구현
--> 에디터나 PC로 빌드한 환경에서 테스트할 때는 OnApplicationFocus()가 더 자주 호출되기 때문에 모바일 뿐만 아니라 모든 환경에서 안정적으로 동작하기 위해서는 둘 다 사용하는 것이 좋다.
※ 공식 문서 - OnApplicationPause / OnApplicationFocus
https://docs.unity3d.com/2022.3/Documentation/ScriptReference/MonoBehaviour.OnApplicationPause.html
https://docs.unity3d.com/2022.3/Documentation/ScriptReference/MonoBehaviour.OnApplicationFocus.html
>> 작성한 코드
- AudioManager.cs
<hide/>
// 앱이 백그라운드로 갔을 때 Audio Mute
private void OnApplicationPause(bool pauseStatus)
{
if (pauseStatus) // 백그라운드 --> 강제 음소거
{
bgmController.SetBGMOn(false);
sfxController.SetSFXOn(false);
}
else // 포그라운드 --> 유저 설정에 맞춰서 복원
{
bgmController.SetBGMOn(_isAudioOn);
sfxController.SetSFXOn(_isAudioOn);
}
}
└ 최종 코드
>> AudioManager.cs
<hide/>
using System;
using UnityEngine;
public class AudioManager : Singleton<AudioManager>
{
[SerializeField] private BGMController bgmController;
[SerializeField] private SFXController sfxController;
// 각 Controller가 필요하시면 아래와 같이 호출해주세요.
public BGMController BGM => bgmController;
public SFXController SFX => sfxController;
private bool _isAudioOn = true; // Audio 토글이 On인지, Off인지
protected override void Initialize()
{
base.Initialize();
_isAudioOn = true; // 기본값은 켜짐으로 설정
// 필요 시, 초기화 ex) 저장된 설정 로드
}
public void SetBGMController(BGMController bgmController)
{
this.bgmController = bgmController;
}
public void SetSFXController(SFXController sfxController)
{
this.sfxController = sfxController;
}
// Audio 토글을 통해 BGM 및 SFX On/Off
public void ToggleAudio()
{
_isAudioOn = !_isAudioOn;
bgmController.SetBGMOn(_isAudioOn);
sfxController.SetSFXOn(_isAudioOn);
}
public bool GetIsAudioOn()
{
return _isAudioOn;
}
// 앱이 백그라운드로 갔을 때 Audio Mute
private void OnApplicationPause(bool pauseStatus)
{
if (pauseStatus) // 백그라운드 --> 강제 음소거
{
bgmController.SetBGMOn(false);
sfxController.SetSFXOn(false);
}
else // 포그라운드 --> 유저 설정에 맞춰서 복원
{
bgmController.SetBGMOn(_isAudioOn);
sfxController.SetSFXOn(_isAudioOn);
}
}
}
Unity에서 만든 게임을 앱인토스에 올리기
: 다른 팀원 분께서 만든 게임을 앱인토스와 연동해놓으셨다. (React + TypeScript + Vite)
--> 만드신 자료의 GitHub Repository에 초대해주셔서 코드를 볼 수 있게 해주셨고, 만드실 때 참고하신 자료도 함께 올려주셨기에 내가 나중에라도 참고하기 위해 이를 남긴다.
※ 참고 자료
- 공식 문서
앱인토스 개발자센터
developers-apps-in-toss.toss.im
- 블로그
유니티 ait 파일 생성, 앱인토스 ait 파일 빌드, 유니티에서 만든 게임을 앱인토스에 올리기
앱인토스 개발자센터 이 글은 앱인토스 ait 빌드, 리더보드,, 어쩌고 기능을 어떻게 써!! 하시는 분들에게 바칩니다. 앱인토스로 게임을 만드는 분들께 도움이 되길 바랍니다 … ⭐ 일단 제일 중
velog.io
'Development > Internship' 카테고리의 다른 글
[멋사 로켓단 인턴쉽] 18일차 - 앱 출시 전 디테일 보강 (1) | 2025.09.01 |
---|---|
[멋사 로켓단 인턴쉽] 17일차 - 게임 완성도 올리기 (1) | 2025.08.29 |
[멋사 로켓단 인턴쉽] 15일차 - NewRecord를 PlayerPrefs와 연동 (2) | 2025.08.27 |
[멋사 로켓단 인턴쉽] 14일차 - 예비군으로 인해 불참 (0) | 2025.08.26 |
[멋사 로켓단 인턴쉽] 13일차 - Audio 관련 기능 추가 및 버그 수정 (1) | 2025.08.25 |