Inspector에 쉽게 임의의 표시를 추가하고 싶습니다.

3668 단어 Unity

컨디션


이 기사는 Unity 5입니다.3.2 f1을 사용했다.

전언


인스펙터에 표시하고 싶은 값이 있지만, 학급마다 전용 커스텀 에디터를 쓰는 게 귀찮아서 가능한 한 쉽게 실현할 수 있는 방법을 조사했다.

절차.


MonoBehavior 확장


MonoBehavior를 계승하는 클래스를 만들고 디스플레이 데이터를 가져오는 방법을 추가합니다.
클래스 이름은 Custom MonoBehavior입니다.
CustomMonoBehaviour.cs
using UnityEngine;

public abstract class CustomMonoBehaviour : MonoBehaviour {
    public abstract string GetCustomInspectData();
}

Custom MonoBehavior를 객체로 하는 Editor 클래스 만들기


Custom Editor 속성의 두 번째 매개변수를 트루로 설정하면 Custom MonoBehavior를 상속하는 클래스도 객체가 됩니다.
클래스 이름은 Custom MonoBehaviour Inspctor입니다.
※ 이 스크립트는 Editor 폴더에 배치해야 합니다.그렇지 않으면 출력을 구축할 때 오류가 발생합니다.
CustomMonoBehaviourInspctor.cs
using UnityEditor;

[CustomEditor(typeof(CustomMonoBehaviour), true)]
public class CustomMonoBehaviourInspctor : Editor {
    public override void OnInspectorGUI() {
        DrawDefaultInspector(); // デフォルトの表示内容
        EditorGUILayout.TextArea((target as CustomMonoBehaviour).GetCustomInspectData()); // 追加表示分
    }
}

스크립트에 Custom MonoBehavior 적용


Custom MonoBehaviour를 상속하고 GetCustom InspectData를 표시할 데이터를 출력합니다.
클래스 이름은 HogeScript로 설정됩니다.
HogeScript.cs
public class HogeScript : CustomMonoBehaviour {
    public override string GetCustomInspectData() {
        return transform.position.ToString();
    }
}

결실


다음 그림에서 보듯이 inspector의 HogeScript 디스플레이가 추가되었습니다.

후기

  • 학급 확장보다 인터페이스 사용이 더 편리하지 않나요?그렇게 생각하지만.
    Custom Editor에서는 On Inspector GUI가 인터페이스를 대상으로 해도 이동하지 않으므로 사용할 수 없습니다.
  • 단순한 문자열과 수치만 표시하려면 public 변수에 수치를 삽입하는 것이 비교적 쉽다.(조금 더럽지만)
  • 좋은 웹페이지 즐겨찾기