2024. 8. 5. 21:09ㆍ나의 개발자 기록/본 캠프 개발 일지
2024년 8월 05일 월요일
What I did today : Heal Text Effect 만들기
오늘 오전에는 금요일날 고민했던 Heal Effect와 관련해서 Particle System으로 더 알아보다가 답이 안보이자. 본래 래퍼런스 게임인 "명일방주"를 참고해 보았습니다. 명일방주에서는 텍스트를 이용하여 캐릭터의 머리 위에 회복량을 띄우는 것과 힐러 캐릭터 고유의 이펙트 혹은 다양한 방식으로 힐을 했다는 요소를 추가하고 있었습니다.
[SerializeField] private GameObject healTextPrefab;
[SerializeField] private Transform healTextParent;
private void UpdateHealthUI()
{
if (healthSlider != null) healthSlider.value = currentHealth / maxHealth;
}
public void Heal(float amount)
{
currentHealth += amount;
if (currentHealth > maxHealth)
{
currentHealth = maxHealth;
}
UpdateHealthUI();
ShowHealText(amount);
}
private void ShowHealText(float amount)
{
if (healTextPrefab != null && healTextParent != null)
{
GameObject healTextInstance = Instantiate(healTextPrefab, healTextParent);
healTextInstance.GetComponent<TextMeshProUGUI>().text = "+" + amount.ToString();
StartCoroutine(FadeOutText(healTextInstance));
}
}
private IEnumerator FadeOutText(GameObject textObject)
{
TextMeshProUGUI text = textObject.GetComponent<TextMeshProUGUI>();
Color originalColor = text.color;
for (float t = 0; t < 1; t += Time.deltaTime / 1.0f) // 1초 동안 페이드 아웃
{
text.color = Color.Lerp(originalColor, Color.clear, t);
yield return null;
}
Destroy(textObject);
}
그래서 저도 일단은 체력을 했다는 표시를 위해서 텍스트를 프리팹으로 만들고, Health System 스크립트에 해당 텍스트를 게임 오브젝트로 받아오고, 생성 위치는 캐릭터 내에 있는 캔버스를 받아오는 방향으로 만들었습니다. 그리고 회복량에 따라서 체력이 텍스트에 표시되는 로직과 PadeOut 느낌을 주기 위해서 코루틴을 사용하여 반복문으로 구현했습니다.
로직을 구현하고 테스트를 해본 결과 정상적으로 잘 뜨긴 하지만, 뭔가 어색한 부분도 있고, 힐러의 공격 속도가 빠르다던가, 애니메이션이 나오다 마는 문제도 여럿 보이더군요... 보이는 버그들을 바로 고치고는 싶지만 다음 주에 유저 테스트를 진행해야 하기 때문에 이번 주에 아마 해야할 것들이 많이 있어서 일단은 넘어가고, 다른 시스템을 구축하는 방향으로 결정하게 됐습니다.
What I did today : Sound System 구축하기
기본적인 UI의 구조와 씬 이동과 관련된 부분은 저희 팀원분이 맡고 계시고, 덱 빌딩 시스템 또한 팀장님께서 맡고 계시니 저는 사운드 시스템을 미리 구축해 놓는 것이 좋다고 생각했습니다. 그래서 최종 전에 했던 프로젝트에 사용한 사운드 시스템을 가져와서 수정한 뒤 적용했습니다.
기본적인 구조 자체는 강의에서 나왔던 것과 비슷하긴 한데, 오디오 믹서를 통해서 사운드가 나오고, Sound Source는 오브젝트 풀로 관리를해서 중복된 Sound가 넘치지 않게 사용할 수 있고, 사용 방법으로는 기본적으로 싱글톤 패턴으로 만들어진 SoundManager에서 RegisterSoundEffect 함수를 호출해 Sound를 등록하고, 사용할 때 매니저를 통해서 PlayClip 함수를 사용하면 되는 부분이라 아마 본격적으로 사운드를 적용할 때 자주 쓸 듯싶습니다. 그리고 다른 문제가 있다면 그때 수정해도 늦지 않으니까, 일단 이렇게라도 구성을 했습니다.
What I did today : UGS (Unity Gaming Services)에 대해서 알아보기
https://unity.com/kr/solutions/gaming-services
Unity Gaming Services 라이브 게임 개발 플랫폼
Unity Gaming Services 통해 Multiplayer 네트워킹, 백엔드 개발, 라이브 운영, DevOps 및 게임 Monetization 위한 라이브 게임을 더 빠르게 구축하세요.
unity.com
https://docs.unity.com/ugs/en-us/manual/authentication/manual/platform-signin-custom-id
Custom ID sign-in
AccountsAuthenticationTutorialsCustom ID English日本語 (日本)한국어(대한민국)中文(中国) English日本語 (日本)한국어(대한민국)中文(中国) Custom ID sign-in#Minimum SDK version: 3.1.0This article guides you through the f
docs.unity.com
사운드 시스템 구축이 얼추 끝나고나서, 저는 저장과 불러오기 기능을 위해 UGS 기능을 알아보았는데, 처음에는 유니티 구글 시트가 나와서 뭔가 했더니(약자가 똑같음)... Unity Gaming Services의 약자로 유니티에서 제공해 주는 계정 관리, 플레이어 정보 관리, 게임 정보 관리, 멀티 플레이어, 콘텐츠 관리 등등 여러 가지로 제공해 주는 툴셋이였습니다. 어떻게 사용하는지에 대해서 많이 나와 있지 않아서 유튜브나 구글에서 찾아본 결과 설명하는 내용은 있어도 어떻게 사용하는지에 대해서는 찾기가 어렵더군요.
그래서 일단은 유니티 공식 문서의 가이드 라인을 따라서 어찌어찌 유니티 패키지를 다운로드하고, 계정 연동까지는 해놓았습니다. 여기서 저희 게임에 필요한 부분이 계정 연동에 관련해서 저장과 불러오기가 되는 부분이라 Authentication와 Cloud Save만 다운 받고 Comit을 하긴 했는데, 이걸 가지고 로그인 및 회원가입, 그리고 저장 및 불러오기 등등에 대해서 어떻게 만들어야 할지는 직접적으로 알아보면서 만들어야 할 것 같습니다. 일단 오늘 한 작업에 대해서 팀원분들에게 공유하고, 남은 시간에는 TIL을 쓰면서 마무리했습니다.
면접 질문 대비 : 클래스 상속에서 다이아몬드 문제(diamond problem)가 발생하는 이유와 이를 해결하는 방법에 대해 설명해주세요.
interface IBase
{
void Display();
}
class Base1 : IBase
{
public void Display() { Console.WriteLine("Base1"); }
}
class Base2 : IBase
{
public void Display() { Console.WriteLine("Base2"); }
}
class Derived : IBase
{
private Base1 b1 = new Base1();
private Base2 b2 = new Base2();
public void Display()
{
b1.Display();
b2.Display();
}
}
다이아몬드 문제는 다중 상속 시 두 부모 클래스가 같은 조상 클래스를 상속받아 자식 클래스가 두 번 상속받는 문제를 의미합니다. C#은 다중 상속을 지원하지 않지만, 인터페이스를 사용하여 문제를 해결할 수 있습니다.
'나의 개발자 기록 > 본 캠프 개발 일지' 카테고리의 다른 글
2024년 8월 07일 수요일 개발일지 / 몬스터 추가 계획하기 + 슬라임 몬스터 추가하기 (0) | 2024.08.07 |
---|---|
2024년 8월 06일 화요일 개발일지 / 계정 관리와 저장 및 불러오기 (0) | 2024.08.06 |
2024년 8월 02일 금요일 개발일지 / 나머지 캐릭터 만들기 (0) | 2024.08.02 |
2024년 8월 01일 목요일 개발일지 / 힐러 캐릭터 만들기 (0) | 2024.08.01 |
2024년 7월 31일 수요일 개발일지 / 캐릭터 더 많이 만들기 (0) | 2024.07.31 |