using UnityEngine; using UnityEngine.UI; public class ActiveStateSynchronizer : MonoBehaviour { #if VR [Header("同步配置")] [Tooltip("拖入需要同步的目标父物体")] public Transform targetParent; void Update() { if (targetParent == null) { targetParent = GameObject.Find("SceneManager/niu/PTXZ")?.transform; } if (targetParent != null) { SynchronizeActiveStates(transform, targetParent); } } private void SynchronizeActiveStates(Transform source, Transform target) { // 获取最小子物体数量以避免越界 int minChildCount = Mathf.Min(source.childCount, target.childCount); for (int i = 0; i < minChildCount; i++) { Transform sourceChild = source.GetChild(i); Transform targetChild = target.GetChild(i); // 同步当前层级的激活状态 if (sourceChild.gameObject.activeSelf != targetChild.gameObject.activeSelf) { sourceChild.gameObject.SetActive(targetChild.gameObject.activeSelf); } Toggle toggle; Button btn; if (sourceChild.TryGetComponent(out toggle) == true) { toggle.onValueChanged = targetChild.GetComponent().onValueChanged; } else if (sourceChild.TryGetComponent