Один из способов сделать это, что я и делал раньше, это использовать 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
).
Надеюсь, это поможет!