[ 개발 일기 ] 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창이 깔끔해지는 것 같기는 하다.

이참에 한 번 공부해봐도 좋을 것 같다.

 

한 번 공부해보고 싶은 사람들을 위해 링크 첨부해두겠다.

 

시간을 절약해주는 고급 에디터 스크립팅 팁 - 1부 | Unity Blog

대부분의 프로젝트에서 개발자는 반복적이고 오류가 발생하기 쉬운 작업을 자주 수행해야 하는데 특히 새로운 아트 에셋을 통합하는 일은 꽤 까다롭습니다. 예를 들어 캐릭터를 설정하려면 여

blog.unity.com

 

 

[Unity] 커스텀 에디터 제작 방법 (Editor Customize)

Editor Customize 유니티에서 에디터를 커스터마이징 하는 방법이다. 에디터 커스터마이징은 개발자로 하여금 유니티 에디터 자체에 특정 기능을 추가하는 방법이다. 예를 들면 인스펙터의 스크립

algorfati.tistory.com

 

 

[에디터 확장 입문] 번역 9장 CustomEditor

<주의> 원문의 작성 시기는 2016년경으로, 코드나 일부 설명이 최신 유니티 버젼과 다소 맞지 않을 ...

blog.naver.com