ClientSim icon indicating copy to clipboard operation
ClientSim copied to clipboard

OnBecameVisible/Invisible does not work correctly

Open mimyquality opened this issue 4 months ago • 1 comments

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.

mimyquality avatar Jun 26 '25 10:06 mimyquality