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

HoloLens - Unity: How to change color of cursor?

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



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

  1. 参考cursormaterial改变颜色
  2. 通过获取组件改变颜色SkinnedMeshRenderer
  3. 正在尝试使用 ProptertyBlock


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

--编辑--

    public SkinnedMeshRenderer cursorRendererOne, cursorRendererTwo, cursorRendererThree, cursorRendererFour;
private MaterialPropertyBlock _propBlock;
public Material material;

void Start()
{
    _propBlock = new MaterialPropertyBlock();
}

public void OnInputDown(InputEventData eventData)
{
    if (!isActivated)
    {
        //#1
        material.color = Color.blue;
        //#2
        cursorRendererOne.sharedMaterial.color = Color.blue;
        //#3
        cursorRendererOne.GetPropertyBlock(_propBlock);
        _propBlock.SetColor("_Color", Color.blue);
        cursorRendererOne.SetPropertyBlock(_propBlock);
        cursorRendererTwo.SetPropertyBlock(_propBlock);
        cursorRendererThree.SetPropertyBlock(_propBlock);
        cursorRendererFour.SetPropertyBlock(_propBlock);
        isActivated = true;
    }


在这里你看到改变的 material,但是 mesh_top 看起来不同:

这是 "Bug"(也许是有意为之?)。

打开Animation window (CTRL + 6)

并且在层次结构中 select CursorVisual

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

此单个关键帧导致无法在运行时更改该图块的颜色。原因是动画师运行 after OnInputDown 因此它会还原任何关键帧 属性.

的更改

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

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


或者你可以用一个代替固定颜色的代替它只是禁用 SkinnedMeshRenderer 而不是基本上具有或多或少相同的效果但不会搞砸颜色: