Exemplo n.º 1
0
    /// <summary>
    /// MonoBehaviour 개체를 초기화합니다.
    /// </summary>
    void Start()
    {
        /**
         * // 예외 메시지 리스트를 생성합니다.
         * List<string> exceptionList = new List<string>();
         *
         * // 빈 필드가 존재하는 경우 예외 메시지를 추가합니다.
         * if (_stageManager == null)
         *  exceptionList.Add("Map.StageManager == null");
         *
         * // 예외 메시지가 하나 이상 존재하는 경우 예외를 발생하고 중지합니다.
         * if (exceptionList.Count > 0)
         * {
         *  foreach (string msg in exceptionList)
         *  {
         *      Handy.Log("DataBase Error: {0}", msg);
         *  }
         *  throw new Exception("데이터베이스 필드 정의 부족");
         * }
         */

        // 필드를 초기화합니다.
        _stageManager     = StageManager1P.Instance;
        _cameraZoneParent = GetComponentInChildren <CameraZoneParent>();
    }
Exemplo n.º 2
0
    /// <summary>
    /// MonoBehaviour 개체를 초기화 합니다.
    /// </summary>
    protected virtual void Start()
    {
        //
        _database               = DataBase.Instance;
        _stageManager           = StageManager.Instance;
        _camera                 = Camera.main;
        _camZ                   = _camera.transform.position.z;
        _cameraZoneParent       = CameraZoneParent.Instance;
        _cameraZoneBorderParent = CameraZoneBorderParent.Instance;
        _map    = _database.Map;
        _player = _stageManager.MainPlayer;

        // 카메라 관련 필드를 초기화합니다.
        {
            // 카메라 존 집합을 초기화합니다.
            CameraZone[] cameraZones = _cameraZoneParent.GetComponentsInChildren <CameraZone>();
            _cameraZones = new CameraZone[cameraZones.Length];
            foreach (CameraZone cameraZone in cameraZones)
            {
                // 음이 아닌 카메라 존 ID의 경우 집합에 추가합니다.
                int camZoneID = cameraZone._cameraZoneID;
                if (camZoneID >= 0)
                {
                    _cameraZones[cameraZone._cameraZoneID] = cameraZone;
                }
            }

            CameraZoneBorder[] borders = _cameraZoneBorderParent.GetComponentsInChildren <CameraZoneBorder>();
            foreach (CameraZoneBorder border in borders)
            {
                // 음이 아닌 식별자들에 대해서만 처리합니다.
                if (border._fromID >= 0 && border._toID >= 0)
                {
                    border._from = _cameraZones[border._fromID];
                    border._to   = _cameraZones[border._toID];
                }
            }

            // 시작 카메라 존을 맞춥니다.
            /// _startCameraZone = _cameraZones[0];
            _startCameraZone = _stageManager.GetCheckpointCameraZone
                                   (_database.GameManager.SpawnPositionIndex);
            if (_startCameraZone == null)
            {
                throw new Exception("시작 카메라 존이 설정되지 않았습니다.");
            }

            /// _currentCameraZone = _startCameraZone;
            UpdateCameraZone(_startCameraZone, false);
        }


        // 카메라 뷰 박스를 초기화합니다.
        InitializeCameraViewBox();
    }