Skip to content

OnBecameVisible/Invisible does not work correctly #130

@mimyquality

Description

@mimyquality

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions