在我的自定义脚本对象的自定义编辑器脚本中的EditorGUILayout.Curvefield("curve", new AnimationCurve());
函数中编写OnInspectorGUI
后,它不会出现在Inspector中。但是,如果我将代码更改为EditorGUILayout.Curvefield("curve", null);
。将有一个曲线字段,但无法在曲线编辑窗口中进行编辑。
如何更改代码以使曲线字段有效?
或者这是团结的错误?
答案 0 :(得分:0)
EditorGUILayout.Curvefield("curve", new AnimationCurve());
每次调用OnInspectorGUI时,这将创建一个只读 AnimationCurve
。
EditorGUILayout.Curvefield("curve", null);
空曲线有什么意义?这是完全错误的。
正确使用EditorGUILayout.CurveField
:
MyScript.cs
using UnityEngine;
public class MyScript : MonoBehaviour
{
public AnimationCurve myCurve = AnimationCurve.Linear(0, 0, 10, 10);
}
编辑/ MyScriptEditor.cs
using UnityEditor;
using UnityEngine;
[CustomEditor(typeof(MyScript))]
public class MyScriptEditor : Editor
{
void OnInspectorGUI()
{
var myScript = (MyScript)target;
EditorGUILayout.CurveField("curve", myScript.myCurve);
}
}
然后结果是:
可编辑。