控制手柄-BoxBoundsHandle

 

public class TestWindow : EditorWindow
{

    [MenuItem("Window/TestWindow")]
    static void ShowWindow()
    {
        var window = GetWindow<TestWindow>();
        window.titleContent = new GUIContent("TestWindow");
        window.Show();
    }

    private BoxBoundsHandle _handle;

    private void OnEnable()
    {
        if (null == _handle)
        {
            _handle = new BoxBoundsHandle();
            _handle.size = new Vector3(5, 5, 5);
            _handle.center = new Vector3(6, 0, 0);
            _handle.handleColor = Color.red;
            _handle.wireframeColor = Color.blue;
            _handle.midpointHandleSizeFunction = (pos) =>
            {
                return 0.2f;
            };
            //_handle.axes = PrimitiveBoundsHandle.Axes.X | PrimitiveBoundsHandle.Axes.Z;
        }

        SceneView.duringSceneGui += OnSceneGUI;
    }

    private void OnDisable()
    {
        SceneView.duringSceneGui -= OnSceneGUI;
    }

    void OnSceneGUI(SceneView view)
    {
        _handle.DrawHandle();
    }
    
}

 

【关于midpointHandleSizeFunction】

# 就是那个6个面上的红色控制点的大小

# 默认是会根据参数position和相机的距离,调整控制点的大小

(#) 相机拉很远时

 (#) 相机拉很近时

 

# 如果我们像上面的代码那样返回一个固定大小0.2

(#) 相机拉很远,控制点会变很小

 (#) 相机拉很近时,控制点会变大

 

 

 【关于BoxBoundsHandle.axes】

# x,y,z的控制手柄都显示(默认)

# 只显示x, z轴的控制手柄

_handle.axes = PrimitiveBoundsHandle.Axes.X | PrimitiveBoundsHandle.Axes.Z;

 

# 只显示x轴的控制手柄

_handle.axes = PrimitiveBoundsHandle.Axes.X;

 

 

【关于BoxBoundsHandle中文怎么翻译】

# 盒子外框手柄?

# 盒子边框手柄?

挺难翻译的,仅作参考

 

【参考】

IMGUI.Controls.BoxBoundsHandle - Unity 脚本 API

 

posted @ 2022-04-29 00:11  yanghui01  阅读(184)  评论(0编辑  收藏  举报