当前位置:   article > 正文

Unity--PropertyAttribute和PropertyDrawer结合使用将string转为资源引用_unity inspector中路径显示为资源引用

unity inspector中路径显示为资源引用

代码如下:

  1. using UnityEngine;
  2. public class PropertyTest : MonoBehaviour
  3. {
  4. public string prefabPath = "";
  5. }

prefabPath表示引用的prefab路径,在Inspector中显示如下图

这种情况需要手动填写prefab的路径,填错prefab路径程序运行就找不到prefab了,下面通过

PropertyAttribute和PropertyDrawer结合,在Inspector中显示出来的是资源引用,直接弹出面板选择prefab

  1. using UnityEditor;
  2. using UnityEngine;
  3. [CustomPropertyDrawer(typeof(PrefabReference))]
  4. public class ResReferenceDrawer : PropertyDrawer
  5. {
  6. public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
  7. {
  8. if (SerializedPropertyType.String != property.propertyType)
  9. {
  10. EditorGUI.PropertyField(position, property);
  11. return;
  12. }
  13. //根据路径得到一个类型为GameObject的对象
  14. var prefab = (GameObject)AssetDatabase.LoadAssetAtPath(property.stringValue, typeof(GameObject));
  15. //ObjectField会在Inspector面板中显示一个框,后面带一个小按钮,点击后弹出面板选择prefab
  16. var obj = (GameObject)EditorGUI.ObjectField(position, property.displayName, prefab, typeof(GameObject), false);
  17. //得到prefab的路径
  18. string newPath = AssetDatabase.GetAssetPath(obj);
  19. //设置路径
  20. property.stringValue = newPath;
  21. Debug.Log(newPath);
  22. }
  23. }

效果如图,可以点击后面按钮弹出面板选择,也可以直接拖拽prefab进行设置

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/585594
推荐阅读
相关标签
  

闽ICP备14008679号