[ 개발 일기 ] Unity Custom Editor 만져보기
2024. 4. 19. 16:00ㆍ게임 개발/개발 일기
졸업 작품하느라 개인적인 개발 공부가 하고 싶어서 남는 시간에
개인 프로젝트를 하면서 다양한 개발 공부를 해보고 있다.
개인 프로젝트를 진행하면서 코드 구조도 깔끔하게 짜보는 연습을 하며
여러 종류의 매니저와 인터페이스부터 제작하고 있다.
개인 프로젝트는 Procedural Animation 연습을 위해 시작했는데
뭔가 다른 걸 더 많이 하는 것 같다.
아무튼 그렇게 개발을 하면서 Unity Custom Editor를 한 번 사용해봤다.
데미지를 받을 때 효과를 주는 피드백 플레이어인데
여기서 피드백을 추가할 때 피드백을 다른 컴포넌트로 추가하면 인스펙터창이 더러워질 것 같아
하나로 관리하기로 했다. 피드백이 3종류 밖에 없기도 하고..
사실 컴포넌트로 추가하는 방식으로 해도 큰 상관은 없다.
> 세부 코드
더보기
Health Component에서 데미지를 받으면 FeedbackPlayer의 PlayFeedback이 호출된다.
public abstract class Feedback
{
public abstract void PlayFeedback(float damage, DamageType damageType, Vector2 hitDir);
}
public class FeedbackPlayer : MonoBehaviour
{
[Header("Feedback Option")]
public bool isUseHitBlink = false;
public bool isUseDamageText = false;
public bool isUseKnockback = false;
private List<Feedback> _feedbackList = new List<Feedback>();
[NonSerialized]
public SpriteRenderer hitBlinkSprite;
[NonSerialized]
public GameObject hitText;
[NonSerialized]
public Rigidbody2D knockbackRigidbody;
[NonSerialized]
public float thrustValue;
private void Awake()
{
AddFeedback();
}
private void AddFeedback()
{
if (isUseHitBlink)
_feedbackList.Add(new HitBlinkFeedback(this, hitBlinkSprite));
if (isUseDamageText)
_feedbackList.Add(new DamageTextFeedback());
if (isUseKnockback)
_feedbackList.Add(new KnockbackFeedback(knockbackRigidbody, thrustValue));
}
public void PlayFeedback(float damage, DamageType damageType, Vector2 hitDir)
{
foreach(Feedback feedback in _feedbackList)
{
feedback.PlayFeedback(damage, damageType, hitDir);
}
}
}
커스텀 에디터를 사용한 기능은 이것이다.
bool 값 처리시
필요한 값들을 넣을 수 있도록 제작했다.
확실히 커스텀 에디터를 사용하면 Inspector창이 깔끔해지는 것 같기는 하다.
이참에 한 번 공부해봐도 좋을 것 같다.
한 번 공부해보고 싶은 사람들을 위해 링크 첨부해두겠다.
'게임 개발 > 개발 일기' 카테고리의 다른 글
[ 개발 일기 ] FSM은 어렵다 (0) | 2024.05.29 |
---|---|
[ 개발 일기 ] FSM 디자인 고민중.. (0) | 2024.05.28 |
[ 개발 일기 ] SO, Prefab을 에디터에서 저장하기 (0) | 2024.04.26 |
[ 개발 일기 ] Feedback Player 가지고 놀기 (0) | 2024.04.24 |
[ 개발 일기 ] Feedback Player ( Custom Editor ) (0) | 2024.04.23 |