public void Init(Skelsp player)
    {
        _player = player;
        _player.AddObserver(_DiedObject);
        _player.OnMoved       += OnPlayerMoved;
        _player.OnPosSetted   += OnPlayerPosSetted;
        _player.IsControlable  = false;
        _player.OnAmmoChanged += (ammo) => {
            _playerAmmoText.text = String.Format("A: {0}", ammo);
        };
        _player.OnCarringWeapoChanged += (carringWeapo) => {
            _playerGunText.text = String.Format("G: {0}", carringWeapo.ToString());
        };
        _player.OnParamChanged += (name, prev, val) => {
            if (name == "Health")
            {
                _playerHeathText.text = String.Format("H: {0}", Convert.ToSingle(val));
                return;
            }
            if (name == "Score")
            {
                _playerScoreText.text = String.Format("S: {0}", Convert.ToInt32(val));
                return;
            }
        };
        _enemyManager.Init(player);

        _enemyManager.OnEnemyAdded += () => {
            _enemyCountText.text = String.Format("E: {0}", _enemyManager.Count.ToString());
        };
        _enemyManager.OnEnemyRemoved += () => {
            _enemyCountText.text = String.Format("E: {0}", _enemyManager.Count.ToString());
        };
    }
    private void _LevelOn()
    {
        if (!_bLevelSetup)
        {
            _bLevelSetup = true;
            _gameLevel   = GetComponentInChildren <GameLevel>();
            _player      = EGHelpers.CreateObjectByPrefab <Skelsp>(Vector3.zero, prefabPlayer);
            _gameLevel.Init(_player);
            _inputManager.SetPlayer(_player);
            _gameLevel.OnLevelWin += OnLevelWin;
            _gameLevel.OnGameOver += OnGameOver;
            _gameLevel.OnUserExit += OnUserExit;
        }

        _player.gameObject.SetActive(true);
        DebugLogger.WriteInfo("_LevelOn _levelNumber = {0}", _levelNumber);
        _gameLevel.Number = _levelNumber;
        _gameLevel.LoadLevel(_textLevels[_levelNumber - 1].text);
    }