Пример #1
0
            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);
            }
Пример #2
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);
    }
Пример #3
0
    public void DisableShakeCamera()
    {
        CameraBrain _ab = GetActiveBrain();

        if (_ab != null)
        {
            if (_ab.activeCamera != null)
            {
                _ab.activeCamera.DisableNNoise();
            }
        }
    }
Пример #4
0
            // 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
            }
Пример #5
0
 public void RemoveActiveBrain(CameraBrain brain)
 {
     mActiveBrains.Remove(brain);
 }
Пример #6
0
 //添加大脑
 public void AddActiveBrain(CameraBrain brain)
 {
     RemoveActiveBrain(brain);
     mActiveBrains.Insert(0, brain);
 }
Пример #7
0
 private void OnEnable()
 {
     Instance = this;
 }