首页 > 解决方案 > 有没有办法为 HoloLens 2 进行可滚动交互?

问题描述

我正在尝试使用 Unity 制作 HoloLens 2 应用程序。我要实现的下一件事是一个可滚动的列表。我想像我们都知道的那样滚动,例如文本对于 html 中的框或类似的东西来说太大了。

我知道如何移动对象,但如果它们位置太差,我希望它们隐藏起来,这样我就可以实现一个可滚动的列表。

有什么办法吗?我没有找到任何教程来做到这一点。

标签: unity3dscrollhololens

解决方案


我曾经实现了一个虚拟现实“虚拟操作系统”,其中包括带有 3D 对象的可滚动列表,如您在此处所见。如果这是您的显示目标,那么为了实现这一目标,请SetActive(false)在游戏对象非常远离滚动视图时使用它们,并且在它们离开滚动区域的确切时刻——它们需要被部分剪裁-- 你可以通过一个不可见的遮罩立方体来剪辑它们。

这是该剪辑对象的着色器(不是我的):

Shader "Masked/Mask" {
     SubShader {
        // Render the mask after regular geometry, but before masked geometry and
        // transparent things.

        Tags {"Queue" = "Geometry+10" }

        // Don't draw in the RGBA channels; just the depth buffer

        ColorMask 0
        ZWrite On

        // Do nothing specific in the pass:

        Pass {}
    }
}

滚动事件本身是通过指尖中的碰撞器对屏幕中的碰撞器做出反应来触发的。OnTrigger,您将测量速度并将其转换为滚动功能。就我而言,我使用的是 OS -> App -> 页面(包括选项卡)-> 小部件的类结构。这允许您继承 SomeSpecificWidget(例如 ImageButton 或 TextArea)并自动使其适当滚动,而无需滚动器关注细节。


推荐阅读