【问题标题】:Unity Slider doesn't apply changes automaticallyUnity Slider 不会自动应用更改
【发布时间】: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:

Custom slider

如何强制 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


【解决方案1】:

已解决:

OnInspectorGUI()
{
...
if (GUI.changed) EditorUtility.SetDirty(target);
}

【讨论】:

  • 谢谢!工作一种享受
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-27
  • 1970-01-01
  • 1970-01-01
  • 2021-03-18
  • 2018-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多