popcorn/Attributes/Editor/PrefabFieldDrawer.cs

26 lines
888 B
C#

using UnityEngine;
using UnityEditor;
[CustomPropertyDrawer(typeof(PrefabFieldAttribute))]
public class PrefabFieldDrawer : PropertyDrawer {
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label){
if(property.objectReferenceValue != null){
var prefabAssetType = PrefabUtility.GetPrefabAssetType(property.objectReferenceValue);
switch(prefabAssetType){
case PrefabAssetType.Regular:
case PrefabAssetType.Model:
case PrefabAssetType.Variant:
break;
default:
// Prefab以外がアタッチされた場合アタッチを外す
property.objectReferenceValue = null;
break;
}
}
label.text += " (Prefab Only)";
EditorGUI.PropertyField(position, property, label);
}
}