在OnPreRender中调整骨骼的大小不会为Unity中的当前Camera调整大小

时间:2019-07-11 04:51:29

标签: c# unity3d

我正在为Unity3D游戏创建一个自定义头像系统,使玩家能够上传自己的头像。 因为我的游戏是针对VR的,所以我当然想向用户展示身体,在此过程中隐藏头部。 我当时在考虑仅将VR摄像机的头部缩​​小到零,以便镜子和其他摄像机仍然可以看到头部。

我已经尝试了各种不同的方法,包括Update,LateUpdate和OnPreCull。他们中的一些人实际上将头部缩小,但随后是场景中的每个摄像头,而不仅仅是我想要的那个。

private void OnPreRender()
{
    Original = head.localScale;
    head.localScale = Vector3.zero;
}

private void OnPostRender()
{
    head.localScale = Original;
}

我希望头部缩放到0(没有缩放),但是唯一发生的是骨骼的子对象移动到缩小的位置,但实际上没有缩放。

编辑:经过进一步测试,我注意到gameObject.SetActive可以正常工作。仅附加了脚本的那台摄像机的整个头像都变得不可见。缩放似乎无效。我的猜测是缩放可能需要更多帧来处理。而且,当执行render函数时,它只是缩放的一半。

1 个答案:

答案 0 :(得分:0)

这不是有效的方法。您最好将手放在另一个图层上,然后关闭在VR摄像机上为该图层选择的选择。这样,您就无需触摸转换,这是一个较少受native-> Managed要求的统一性(层在Native端处理)