ClientSim
ClientSim copied to clipboard
OnBecameVisible/Invisible does not work correctly
OnBecameVisible/Invisible does not work correctly on ClientSim since VRCSDK 3.8.2.
Specifically:
- Nothing happens when OnBecameInvisible should run.
- OnBecameVisible is executed twice.
This bug seems to be caused by the fact that the Unity event OnBecameVisible/Invisible has been available since VRCSDK 3.8.2.
(Previously, it was known to work by writing _onBecameVisible/Invisible instead.)
Test code:
using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
public enum BecameVisibleTestType
{
BecameVisibleAndInvisible,
BecameVisible,
BecameInvisible,
}
public class BecameVisibleTest : UdonSharpBehaviour
{
[SerializeField]
private BecameVisibleTestType _eventType = default;
[SerializeField]
private GameObject _targetObject;
private void OnBecameVisible()
{
switch (_eventType)
{
case BecameVisibleTestType.BecameVisibleAndInvisible:
case BecameVisibleTestType.BecameVisible:
ToggleObjectActive();
break;
}
}
private void OnBecameInvisible()
{
switch (_eventType)
{
case BecameVisibleTestType.BecameVisibleAndInvisible:
case BecameVisibleTestType.BecameInvisible:
ToggleObjectActive();
break;
}
}
private void ToggleObjectActive()
{
_targetObject.SetActive(!_targetObject.activeSelf);
}
}
I attached this U# script to the appropriate mesh object, put another mesh object into the Target Object and observed the active state.