ArcHandle
UnityEditor.IMGUI.Controls 中的类
建议更改
成功!
感谢您帮助我们提高 Unity 文档的质量。虽然我们无法采纳所有提交内容,但我们确实会阅读用户提出的每个建议更改,并在适用的情况下进行更新。
关闭
提交失败
由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。
关闭
描述
一个用于组合手柄的类,用于在场景视图中编辑角度和半径。
以下自定义编辑器示例允许您在场景视图中编辑此组件的高程角和力属性,其中力由手柄的半径表示。
using UnityEditor;
using UnityEditor.IMGUI.Controls;
using UnityEngine;
[CustomEditor(typeof(ProjectileExample))]
public class ProjectileExampleEditor : Editor
{
ArcHandle m_ArcHandle = new ArcHandle();
protected virtual void OnEnable()
{
// arc handle has no radius handle by default
m_ArcHandle.SetColorWithRadiusHandle(Color.white, 0.1f);
}
// the OnSceneGUI callback uses the Scene view camera for drawing handles by default
protected virtual void OnSceneGUI()
{
ProjectileExample projectileExample = (ProjectileExample)target;
// copy the target object's data to the handle
m_ArcHandle.angle = projectileExample.elevationAngle;
m_ArcHandle.radius = projectileExample.impulse;
// set the handle matrix so that angle extends upward from target's facing direction along ground
Vector3 handleDirection = projectileExample.facingDirection;
Vector3 handleNormal = Vector3.Cross(handleDirection, Vector3.up);
Matrix4x4 handleMatrix = Matrix4x4.TRS(
projectileExample.transform.position,
Quaternion.LookRotation(handleDirection, handleNormal),
Vector3.one
);
using (new Handles.DrawingScope(handleMatrix))
{
// draw the handle
EditorGUI.BeginChangeCheck();
m_ArcHandle.DrawHandle();
if (EditorGUI.EndChangeCheck())
{
// record the target object before setting new values so changes can be undone/redone
Undo.RecordObject(projectileExample, "Change Projectile Properties");
// copy the handle's updated data back to the target object
projectileExample.elevationAngle = m_ArcHandle.angle;
projectileExample.impulse = m_ArcHandle.radius;
}
}
}
}
公共方法
DrawHandle | 一个函数,用于使用其当前配置在当前手柄相机中显示此实例。 |
SetColorWithoutRadiusHandle | 将 angleHandleColor、wireframeColor 和 fillColor 设置为相同的值,其中 fillColor 将具有指定的 alpha 值。radiusHandleColor 将设置为 Color.clear,并且半径手柄将被禁用。 |
SetColorWithRadiusHandle | 将 angleHandleColor、radiusHandleColor、wireframeColor 和 fillColor 设置为相同的值,其中 fillColor 将具有指定的 alpha 值。 |