Объявление
public static AnimationCurve CurveField(Rect position, AnimationCurve value);public static AnimationCurve CurveField(Rect position, string label, AnimationCurve value);
public static AnimationCurve CurveField(Rect position, GUIContent label, AnimationCurve value);
public static AnimationCurve CurveField(Rect position, AnimationCurve value, Color color, Rect ranges);
public static AnimationCurve CurveField(Rect position, string label, AnimationCurve value, Color color, Rect ranges);
public static AnimationCurve CurveField(Rect position, GUIContent label, AnimationCurve value, Color color, Rect ranges);
Параметры
position | Прямоугольник на экране для использования в качестве поля. |
label | Необязательная метка для отображения перед полем. |
value | Кривая для редактирования. |
color | Цвет, которым будет показана кривая. |
ranges | Необязательный прямоугольник, внутри которого ограничивается кривая. |
Возвращает
AnimationCurve Кривая, отредактированная пользователем.
Описание
Создает поле для редактирования AnimationCurve.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
public class EditorGUICurveField : EditorWindow
{
AnimationCurve curveX = AnimationCurve.Linear(0, 0, 1, 0);
AnimationCurve curveY = AnimationCurve.Linear(0, 0, 1, 1);
AnimationCurve curveZ = AnimationCurve.Linear(0, 0, 1, 0);
[MenuItem("Examples/Curve Field demo")]
static void Init()
{
EditorWindow window = GetWindow(typeof(EditorGUICurveField));
window.position = new Rect(0, 0, 400, 199);
window.Show();
}
void OnGUI()
{
curveX = EditorGUI.CurveField(
new Rect(3, 3, position.width - 6, 50),
"Animation on X", curveX);
curveY = EditorGUI.CurveField(
new Rect(3, 56, position.width - 6, 50),
"Animation on Y", curveY);
curveZ = EditorGUI.CurveField(
new Rect(3, 109, position.width - 6, 50),
"Animation on Z", curveZ);
if (GUI.Button(new Rect(3, 163, position.width - 6, 30), "Generate Curve"))
AddCurveToSelectedGameObject();
}
// A GameObject with the FollowAnimationCurve script must be selected
void AddCurveToSelectedGameObject()
{
if (Selection.activeGameObject)
{
FollowAnimationCurve comp =
Selection.activeGameObject.GetComponent();
comp.SetCurves(curveX, curveY, curveZ);
}
else
{
Debug.LogError("No Game Object selected for adding an animation curve");
}
}
}
Это скрипт времени выполнения, который анимирует присоединенный GameObject:
// Обратите внимание, что это должен быть FollowAnimationCurve.cs
using UnityEngine;
using System.Collections;
public class FollowAnimationCurve : MonoBehaviour
{
public AnimationCurve curveX;
public AnimationCurve curveY;
public AnimationCurve curveZ;
public void SetCurves(AnimationCurve xC, AnimationCurve yC, AnimationCurve zC)
{
curveX = xC;
curveY = yC;
curveZ = zC;
}
void Update()
{
transform.position = new Vector3(
curveX.Evaluate(Time.time),
curveY.Evaluate(Time.time),
curveZ.Evaluate(Time.time));
}
}
Объявление
public static void CurveField(Rect position, SerializedProperty property, Color color, Rect ranges);public static void CurveField(Rect position, SerializedProperty property, Color color, Rect ranges, GUIContent label);
Параметры
position | Прямоугольник на экране использовать для поля. |
property | Кривая для редактирования. |
color | Цвет, которым будет показана кривая. |
ranges | Необязательный прямоугольник, внутри которого ограничивается кривая. |
label | Необязательная метка для отображения перед полем. Передайте [[GUIContent.none], чтобы скрыть метку. |
Описание
Создает поле для редактирования AnimationCurve.