void Update() { if (TargetCamera != null) { Vector3 fwd = Vector3.Normalize(transform.position - TargetCamera.transform.position); if (Vector3.Dot(fwd, m_BaseForward) > 0) { transform.forward = m_BaseForward; } else { transform.forward = -m_BaseForward; } } if (VirtualCameraManger == null) { VirtualCameraManger = Manager.Get <VirtualCameraManager>(); } if (VirtualCameraManger == null) { Debug.LogWarning("Virtual Camera Manager not present."); return; } if (Vector3.Distance(VirtualCameraManger.transform.position, transform.position) < ShowDistance) { m_Visibility += Time.deltaTime / ShowDuration; } else { m_Visibility -= Time.deltaTime / HideDuration; } m_Visibility = Mathf.Clamp(m_Visibility, 0, 1); if (m_Visibility == 0) { Panel.Root.SetActive(false); } else { Vector2 scale = new Vector2(PanelSizeXAnimation.Evaluate(m_Visibility), PanelSizeYAnimation.Evaluate(m_Visibility)); Panel.Root.SetActive(true); Panel.Size = new Vector2(scale.x * m_DefaultSize.x, scale.y * m_DefaultSize.y); Panel.PanelColor = m_DefaultPanelColor * PanelColorAnimation.Evaluate(m_Visibility); Panel.TitleColor = m_DefaultTitleColor * TextColorAnimation.Evaluate(m_Visibility); Panel.BodyColor = m_DefaultBodyColor * TextColorAnimation.Evaluate(m_Visibility); Panel.Layout(); foreach (var obj in Panel.OtherSubObjects) { obj.transform.localScale = new Vector3(scale.x, scale.y, 1); //if (m_Visibility == 1 && !obj.activeSelf) obj.SetActive(true); //if (m_Visibility < 1 && obj.activeSelf) obj.SetActive(false); } } }