HoloLens - Unity:如何更改光标的颜色?

Per*_*zim 5 unity-game-engine augmented-reality hololens mrtk

我尝试在光标运行时通过脚本更改颜色,效果达到 75%:

\n在此输入图像描述\n

Mesh_top是唯一不改变颜色的部分,我不知道为什么。\n所有 4 个部分都使用相同的材​​料,名为“ cursormaterial”。\n我尝试过:

\n\n
    \n
  1. 通过参考更改颜色cursormaterial
  2. \n
  3. 通过获取组件来改变颜色SkinnedMeshRenderer
  4. \n
  5. 尝试使用ProptertyBlock
  6. \n
\n\n


在所有三种情况下我都得到了相同的结果。唯一有效的是在点击播放之前我可以更改颜色,这将更改整个光标的颜色。在运行时更改它仅适用于 4 个部分中的 3 个...\xc2\xb4

\n\n

- 编辑 -

\n\n
    public SkinnedMeshRenderer cursorRendererOne, cursorRendererTwo, cursorRendererThree, cursorRendererFour;\nprivate MaterialPropertyBlock _propBlock;\npublic Material material;\n\nvoid Start()\n{\n    _propBlock = new MaterialPropertyBlock();\n}\n\npublic void OnInputDown(InputEventData eventData)\n{\n    if (!isActivated)\n    {\n        //#1\n        material.color = Color.blue;\n        //#2\n        cursorRendererOne.sharedMaterial.color = Color.blue;\n        //#3\n        cursorRendererOne.GetPropertyBlock(_propBlock);\n        _propBlock.SetColor("_Color", Color.blue);\n        cursorRendererOne.SetPropertyBlock(_propBlock);\n        cursorRendererTwo.SetPropertyBlock(_propBlock);\n        cursorRendererThree.SetPropertyBlock(_propBlock);\n        cursorRendererFour.SetPropertyBlock(_propBlock);\n        isActivated = true;\n    }\n
Run Code Online (Sandbox Code Playgroud)\n\n


\n这里你看到了改变的材质,但是mesh_top看起来却不同:\n在此输入图像描述
\n在此输入图像描述

\n

der*_*ugo 3

这是一个“Bug”(也许是有意为之?)。

打开Animation窗口 ( CTRL+ 6)

并在层次结构中选择CursorVisual

如果您现在转到名为的动画,CursorWaitingAnim您可以看到 top_mesh 颜色有一个关键帧。

在此输入图像描述

此单个关键帧导致该图块的颜色无法在运行时更改。原因是动画制作器随后 OnInputDown运行,因此它会恢复任何关键帧属性的更改。

因此,如果您不需要等待动画,只需删除该关键帧即可。

在此输入图像描述

=> 您可以再次在运行时操纵颜色!


或者,您可以将其替换为一个,而不是修复颜色,只需禁用它,SkinnedMeshRenderer它基本上具有或多或少相同的效果,但不会改变颜色:

在此输入图像描述