繁体   English   中英

Unity Steam VR如何引用当前持有的对象?

[英]Unity Steam VR how to reference the currently held object?

在附加到控制器的脚本中,我希望能够引用控制器当时持有的子对象,但是我不确定如何。 知道如何执行此操作,是否需要标记对象或沿这些方向的内容?

至少我曾经做过的一种方法是使用System事件。

您在控制器中进行了两个事件:

event EventHandler OnPickedUp;
event EventHandler OnLetGo;

如果您设法在捡起物品的范围之内,则触发事件OnPickekUp

public class MyVRController
{
    public event EventHandler OnPickedup;
    public event EventHandler OnLetGo;
    private bool HasObject = false;
    ...
    private void SuccessfullyPickedUp(GameObject pickedUpGO)
    {
        if(OnPickedUp != null)
        {
            HasObject = true;
            OnPickedUp(pickedUpGO, null);
        }
    }
    ...
    private void OnLetGo()
    {
        if(OnLetGo != null)
        {
            HasObject = false;
            OnLetGo(this, null);
        }
    }
    ...
}

然后,无论需要关心您捡起或放下东西的事实,都可以这样做:

public class MyGameManager
{
    public void Start()
    {
        // However you reference the controllers, do it here.
        myRightVRController.OnPickedUp += SomeFunc1;
        myRightVRcontroller.OnLetGo += SomeFunc2;
        myLeftVRController.OnPickedUp += SomeFunc3;
        myLeftVRController.OnLetGo += SomeFunc4;
        // The rest of your initialization...
    }
}

如果需要,可以在可以传递的EventArgs中指定事件来自哪个控制器(当前传递null )。

希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM