void Awake() { Instance = this; mainCamera = Camera.main; int cameraPriority = 0; virtualCameras = VirtualCamera.virtualCameras; // Sets the virtual camera with the highest priority as active foreach (VirtualCamera virtualCamera in virtualCameras) { if (virtualCamera.priority > cameraPriority) { cameraPriority = virtualCamera.priority; currentCamera = virtualCamera; } virtualCamera.isActive = false; } currentCamera.isActive = true; if (Application.isPlaying) { transform.SetParent(currentCamera.cameraTransform); } // Reset Position and rotation transform.localPosition = Vector3.zero; transform.localRotation = Quaternion.Euler(0, 0, 0); }
public override void OnInspectorGUI() { DrawDefaultInspector(); CameraBrain IpctDic = target as CameraBrain; if (IpctDic.Keys == null) { IpctDic.Keys = new CameraTargetType[0]; IpctDic.Values = new Transform[0]; } DrawHeader("相机目标类型添加"); GUILayout.BeginVertical("Box"); for (int i = 0; i < IpctDic.Keys.Length; i++) { if (DrawItem(IpctDic.Keys[i], ref IpctDic.Values[i], i)) { ArrayDeleteAt(ref IpctDic.Keys, i, 1); ArrayDeleteAt(ref IpctDic.Values, i, 1); } } GUILayout.BeginHorizontal(); string[] keys = Enum.GetNames(typeof(CameraTargetType)); cIndex = EditorGUILayout.Popup(cIndex, keys); if (GUILayout.Button("添加类型")) { bool have = false; CameraTargetType ct = (CameraTargetType)cIndex; for (int i = 0; i < IpctDic.Keys.Length; i++) { if (IpctDic.Keys[i] == ct) { have = true; break; } } if (!have) { System.Array.Resize(ref IpctDic.Keys, IpctDic.Keys.Length + 1); System.Array.Resize(ref IpctDic.Values, IpctDic.Values.Length + 1); IpctDic.Keys[IpctDic.Keys.Length - 1] = ct; } } if (GUILayout.Button("清除所有")) { for (int i = 0; i < IpctDic.Keys.Length; i++) { ArrayDeleteAt(ref IpctDic.Keys, i, 1); ArrayDeleteAt(ref IpctDic.Values, i, 1); i--; } } GUILayout.EndHorizontal(); GUILayout.EndVertical(); EditorUtility.SetDirty(IpctDic); }
public void DisableShakeCamera() { CameraBrain _ab = GetActiveBrain(); if (_ab != null) { if (_ab.activeCamera != null) { _ab.activeCamera.DisableNNoise(); } } }
// Start is called before the first frame update void Start() { #if UNITY_EDITOR if (PrefabStageUtility.GetCurrentPrefabStage() == null) { #endif lastPriority = priority; cameraBrain = CameraBrain.Instance; // cameraBrain.OnPriorityChange(); lastPos = followTarget.position; transform.position = followTarget.position + followTarget.forward * -distance + transform.up.normalized * offset.y + transform.right.normalized * offset.x; cameraTransform.position = transform.position; cameraTransform.rotation = transform.rotation; #if UNITY_EDITOR } #endif }
public void RemoveActiveBrain(CameraBrain brain) { mActiveBrains.Remove(brain); }
//添加大脑 public void AddActiveBrain(CameraBrain brain) { RemoveActiveBrain(brain); mActiveBrains.Insert(0, brain); }
private void OnEnable() { Instance = this; }