c# - 使用另一个类的 serializedObject
问题描述
我做了一个基础课
public class EditorSerializaion : Editor
{
public void DrawSerializedField(string name, string title)
{
SerializedProperty property;
property = serializedObject.FindProperty(name);
EditorGUILayout.PropertyField(property, new GUIContent(title));
serializedObject.ApplyModifiedProperties();
}
}
我想从自定义编辑器类中调用它
[CustomEditor(typeof(BasicComponentScript))]
public class BaiscComponentEditor : Editor
{
EditorSerializaion editorSerializaion;
public override void OnInspectorGUI()
{
editorSerializaion.DrawSerializedField("pos", "Posotion");
}
}
但它不起作用(在DrawSerializedField
函数中serializedObject.FindProperty(name)
返回null
但我在自定义检查器中使用相同的名称执行它)
解决方案
您可以将 serializedObject 作为参数传递给 DrawSerializedField。而且我认为从 Editor 扩展 EditorSerialization 对您的情况没有任何好处(如您所见,您不能自动访问其他 Editor 脚本的 serializedObjects)。如果我是你,我会把它变成一个静态实用程序类:
public static void DrawSerializedField(SerializedObject serializedObject, string name, string title)
EditorSerializaion.DrawSerializedField(serializedObject, "pos", "Position");
推荐阅读
- java - 如何在我的 Java Web 应用程序中访问 Heroku ClearDB?
- java - PersonQueue 不是抽象的,不会覆盖 Queue 中的抽象方法 addLast()
- java - 有没有办法简化这个三元语句?
- php - 为什么 money_format() PHP 函数不格式化数字?
- php - php simplexml 加载字符串 xmlParseCharRef:无效的 xmlChar 值 25
- jquery - $.fn.jquery 在将 jquery 更新为新版本时显示旧版本
- mysql - vb.net 中的查询错误返回不正确的双精度值
- sql-server - 如何根据条件将数据从一个表复制到另一个表
- react-native - 热代码推送 react native
- php - 如何在laravel中的关系上应用reverse()?