【发布时间】:2016-12-10 18:46:35
【问题描述】:
我用 Slider 创建了自定义编辑器:
[CustomEditor(typeof(CylindricalCamera))]
public class CylindricalCameraEditor : Editor
{
public override void OnInspectorGUI()
{
CylindricalCamera camera = (CylindricalCamera)target;
camera._nearClipPlane = EditorGUILayout.Slider(camera._nearClipPlane, 0, 10);
在 CylindricalCamera 中,我正在绘制一个自定义 Gizmo:
public class CylindricalCamera : MonoBehaviour
{
..
void OnDrawGizmos()
{
...
我希望每次拖动滑块时都重新绘制 CylindricalCamera 中的 Gizmo。但实际上我不仅要拖动滑块,还要在滑块附近的文本框中选择并按 Enter:
如何强制 Slider 在不按 Enter 的情况下自动应用更改?
我正在使用 Unity 5.3.5 f1
【问题讨论】:
-
您是否尝试将 Debug.Log 放入
OnInspectorGUI方法以确定您从滑块获得的值是否实际发生变化? -
另外,请注意您使用的是旧的自定义编辑器 w 目标;在官方文档(最上面的代码块)中查看带有序列化属性的新示例:docs.unity3d.com/ScriptReference/Editor.html
-
从日志看来,camera._nearClipPlane 正在立即更改,但 OnDrawGizmos() 函数正在延迟调用。似乎只有在文本框中输入值会导致 OnDrawGizmos() 调用。而且,Editor 中没有 OnSceneGUI 功能(未记录)!
标签: user-interface events unity3d 3d editor