public override void Init()
 {
     base.Init();
     _isEliminating = false;
     BulletsManager.GetInstance().RegisterPlayerBullet(this);
     _movableObject = ObjectsPool.GetInstance().GetPoolClassAtPool <MovableObject>();
 }
 public override void Init()
 {
     base.Init();
     _isSized       = false;
     _curPos        = Vector2.zero;
     _existDuration = -1;
     BulletsManager.GetInstance().RegisterEnemyBullet(this);
     _isDirty                  = false;
     _pathCount                = 0;
     _clearFlag                = 0;
     _isHeadEnable             = false;
     _isSourceEnable           = false;
     _isInitSourcePos          = true;
     _laserSegmentCount        = 0;
     _isCachedCollisionSegment = false;
     _collidedSegmentCount     = 0;
     _isInitAngle              = false;
     _laserLen                 = 0;
     _renderObjPos             = true;
     _timeSinceLastVChanged    = 0;
     _preV = 0;
     _isSourceEliminated = false;
     if (_movableObj == null)
     {
         _movableObj = ObjectsPool.GetInstance().GetPoolClassAtPool <MovableObject>();
     }
 }
Beispiel #3
0
    protected override void CheckCollisionWithPlayerBullet()
    {
        // 计算碰撞盒参数
        Vector2 lbPos = new Vector2(_curPos.x - _radius, _curPos.y - _radius);
        Vector2 rtPos = new Vector2(_curPos.x + _radius, _curPos.y + _radius);
        int     i, bulletCount;
        List <PlayerBulletBase> bulletList = BulletsManager.GetInstance().GetPlayerBulletList();
        PlayerBulletBase        bullet;

        bulletCount = bulletList.Count;
        for (i = 0; i < bulletCount; i++)
        {
            bullet = bulletList[i];
            // 判断是否要进行碰撞检测
            if (bullet != null &&
                bullet.ClearFlag == 0 &&
                bullet.DetectCollision() &&
                bullet.CheckBoundingBoxesIntersect(lbPos, rtPos))
            {
                if (DetectCollisionWithPlayerBullet(bullet))
                {
                    _collidedByPlayerBullet?.Invoke(this, bullet);
                }
            }
        }
    }
    protected override void CheckCollisionWithEnemyBullet()
    {
        float maxHalfSize = Mathf.Max(_halfWidth, _halfHeight);
        // 计算碰撞盒参数
        Vector2 lbPos = new Vector2(_curPos.x - maxHalfSize, _curPos.y - maxHalfSize);
        Vector2 rtPos = new Vector2(_curPos.x + maxHalfSize, _curPos.y + maxHalfSize);
        int     i, bulletCount;
        List <EnemyBulletBase> bulletList = BulletsManager.GetInstance().GetEnemyBulletList();
        EnemyBulletBase        bullet;

        bulletCount = bulletList.Count;
        for (i = 0; i < bulletCount; i++)
        {
            bullet = bulletList[i];
            // 判断是否要进行碰撞检测
            if (bullet != null &&
                bullet.ClearFlag == 0 &&
                bullet.CanBeEliminated(eEliminateDef.HitObjectCollider) &&
                bullet.CheckBoundingBoxesIntersect(lbPos, rtPos))
            {
                if (DetectCollisionWithEnemyBullet(bullet))
                {
                    _collidedByEnemyBullet?.Invoke(this, bullet);
                }
            }
        }
    }
Beispiel #5
0
    public override void SetStyleById(string id)
    {
        EnemyCurveLaserCfg cfg = BulletsManager.GetInstance().GetCurveLaserCfgById(id);

        if (cfg == null)
        {
            Logger.LogError("Bullet ChangeStyle Fail! SysId  " + id + " is not exist!");
            return;
        }
        if (_bullet != null)
        {
            ObjectsPool.GetInstance().RestorePrefabToPool(_prefabName, _bullet);
        }
        _cfg        = cfg;
        _bullet     = BulletsManager.GetInstance().CreateBulletGameObject(BulletType.Enemy_CurveLaser, cfg.id);
        _prefabName = cfg.id;
        _trans      = _bullet.transform;
        Transform laserTrans = _trans.Find("LaserObject");

        _mesh = laserTrans.GetComponent <MeshFilter>().mesh;
        if (_cfg.aniCount == 0)
        {
            int index = cfg.colorIndex;
            _textureIndex = 16 - index;
            _vUnit        = 1f / cfg.colorsCount;
            _startV       = _vUnit * (_textureIndex - 1);
            _endV         = _vUnit * _textureIndex;
        }
        _isPosModified = true;
    }
Beispiel #6
0
    /// <summary>
    /// 根据Id创建SimpleBullet原型
    /// </summary>
    /// <param name="bulletId"></param>
    /// <returns></returns>
    private GameObject CreateEnemySimpleProtoType(string bulletId)
    {
        GameObject            original  = Resources.Load <GameObject>("BulletPrefab/SimpleBullet");
        GameObject            protoType = GameObject.Instantiate <GameObject>(original);
        EnemyBulletDefaultCfg cfg       = BulletsManager.GetInstance().GetBulletDefaultCfgById(bulletId);
        string protoTypeName            = "EnemySimpleBullet" + bulletId;

        // 设置sprite以及material
        protoType.name = protoTypeName;
        SpriteRenderer sp = protoType.transform.Find("BulletSprite").GetComponent <SpriteRenderer>();

        if (cfg.aniFrameCount == 0)
        {
            sp.sprite = ResourceManager.GetInstance().GetSprite(Consts.STGBulletsAtlasName, cfg.spriteName);
        }
        else
        {
            sp.sprite = ResourceManager.GetInstance().GetSprite(Consts.STGBulletsAtlasName, cfg.spriteName + "_0");
        }
        if (cfg.blendMode != eBlendMode.Normal)
        {
            sp.material = ResourceManager.GetInstance().GetSpriteMatByBlendMode(cfg.blendMode);
        }
        UIManager.GetInstance().AddGoToLayer(protoType, LayerId.EnemyBarrage);
        // 添加原型到缓存池中
        ObjectsPool.GetInstance().AddProtoType(bulletId, protoType);
#if LogCreateBulletProto
        Logger.Log("Create Bullet ProtoType " + protoTypeName);
#endif
        return(protoType);
    }
Beispiel #7
0
    public void Init()
    {
        // 游戏本体边界
        Global.GameLBBorderPos = new Vector2(-Consts.GameWidth / 2, -Consts.GameHeight / 2);
        Global.GameRTBorderPos = new Vector2(Consts.GameWidth / 2, Consts.GameHeight / 2);
        // 弹幕边界
        Global.BulletLBBorderPos = new Vector2(Global.GameLBBorderPos.x - 100, Global.GameLBBorderPos.y - 100);
        Global.BulletRTBorderPos = new Vector2(Global.GameRTBorderPos.x + 100, Global.GameRTBorderPos.y + 100);
        // 玩家坐标边界
        Global.PlayerLBBorderPos = new Vector2(Global.GameLBBorderPos.x + 10, Global.GameLBBorderPos.y + 10);
        Global.PlayerRTBorderPos = new Vector2(Global.GameRTBorderPos.x - 10, Global.GameRTBorderPos.y - 10);

        InterpreterManager.GetInstance().Init();
        STGStageManager.GetInstance().Init();
        AnimationManager.GetInstance().Init();
        BulletsManager.GetInstance().Init();
        EnemyManager.GetInstance().Init();
        ItemManager.GetInstance().Init();
        ColliderManager.GetInstance().Init();

        ExtraTaskManager.GetInstance().Init();

        EffectsManager.GetInstance().Init();
        STGEliminateEffectManager.GetInstance().Init();
        BackgroundManager.GetInstance().Init();
#if ShowCollisionViewer
        CollisionViewer.Instance.Init();
#endif
    }
Beispiel #8
0
    //"Current Frame : {0}\n" +
    //"Current Frame : {0}\n" +
    //"Current Frame : {0}\n" +
    //"Current Frame : {0}\n" +
    //"Current Frame : {0}\n";
    private void UpdateDebugInfo()
    {
        string info = String.Format(DebugInfo,
                                    STGStageManager.GetInstance().GetFrameSinceStageStart(),
                                    BulletsManager.GetInstance().GetEnemyBulletsCount()
                                    );

        _debugInfoText.text = info;
    }
Beispiel #9
0
    public static int ClearEnemyBulletsInRange(ILuaState luaState)
    {
        float centerX = (float)luaState.ToNumber(-3);
        float centerY = (float)luaState.ToNumber(-2);
        float radius  = (float)luaState.ToNumber(-1);

        BulletsManager.GetInstance().ClearEnemyBulletsInRange(new Vector2(centerX, centerY), radius);
        return(0);
    }
 public override void Init()
 {
     base.Init();
     BulletsManager.GetInstance().RegisterPlayerBullet(this);
     _isCached = false;
     _isCachedCollisionSegments = false;
     _curLaserLen = 0;
     _isActive    = false;
 }
    public override void SetStyleById(string id)
    {
        // 根据传入的id读取配置,重新生成数据
        EnemyBulletDefaultCfg cfg = BulletsManager.GetInstance().GetBulletDefaultCfgById(id);

        if (cfg == null)
        {
            Logger.LogError("Bullet ChangeStyle Fail! SysId  " + id + " is not exist!");
            return;
        }
        if (_bullet != null)
        {
            // 回收现有的prefab
            ObjectsPool.GetInstance().RestorePrefabToPool(_prefabName, _bullet);
        }
        _cfg        = cfg;
        _prefabName = _cfg.id;
        _bullet     = BulletsManager.GetInstance().CreateBulletGameObject(_type, _cfg.id);
        _trans      = _bullet.transform;
        _spRenderer = _trans.Find("BulletSprite").GetComponent <SpriteRenderer>();
        SetPosition(_curPos.x, _curPos.y);
        SetRotatedByVelocity(cfg.isRotatedByVAngle);
        SetSelfRotation(cfg.selfRotationAngle);
        GrazeDetectParas grazeParas = new GrazeDetectParas
        {
            type       = GrazeDetectType.Rect,
            halfWidth  = cfg.grazeHalfWidth,
            halfHeight = cfg.grazeHalfHeight,
        };

        _collisionHalfWidth  = cfg.collisionRadius * _scaleX;
        _collisionHalfHeight = cfg.collisionRadius * _scaleY;
        _collisionRadius     = cfg.collisionRadius * _scaleX;
        // 计算用于擦弹以及碰撞检测的两个数值
        // 擦弹
        float value = Global.PlayerGrazeRadius + _collisionRadius;

        _detGrazeValue = value * value;
        // 碰撞
        value             = Global.PlayerCollisionVec.z + _collisionRadius;
        _detCollisonValue = value * value;
        SetGrazeDetectParas(grazeParas);
        _aniFrameCount     = _cfg.aniFrameCount;
        _aniFrameInterval  = _cfg.aniFrameInterval;
        _curAniTimeCounter = 0;
        _curAniIndex       = 0;
    }
 public override void SetStyleById(string id)
 {
     _cfg = BulletsManager.GetInstance().GetLinearLaserCfgById(id);
     if (_cfg == null)
     {
         Logger.LogError("LinearLaserCfg with id " + id + " is not exist!");
         return;
     }
     _prefabName = _cfg.id.ToString();
     _laserObj   = BulletsManager.GetInstance().CreateBulletGameObject(BulletType.Enemy_LinearLaser, _cfg.id);
     _objTrans   = _laserObj.transform;
     // 发射源
     _laserSourceTf = _objTrans.Find("Source");
     _laserSourceGo = _laserSourceTf.gameObject;
     // segment原型
     _laserSegmentProtoType = _objTrans.Find("Segment").gameObject;
 }
Beispiel #13
0
 public override void Init()
 {
     base.Init();
     _isMoving         = false;
     _isMovingStraight = false;
     _isMovingCurve    = false;
     _vx              = _vy = _dvx = _dvy = _curVelocity = _curAcce = 0;
     _curVAngle       = _curAccAngle = 0;
     _maxVelocity     = -1;
     _isInitVelocity  = false;
     _isMovingTo      = false;
     _isMovingTowards = false;
     ResetExtraSpeedParas();
     _reCalV      = true;
     _reCalVAngle = false;
     BulletsManager.GetInstance().RegisterEnemyBullet(this);
 }
 public override void ChangeStyleById(string id)
 {
     if (_bullet != null)
     {
         UIManager.GetInstance().HideGo(_bullet);
         ObjectsPool.GetInstance().RestorePrefabToPool(_bulletCfg.textureName, _bullet);
     }
     _bulletCfg           = BulletsManager.GetInstance().GetPlayerBulletCfgById(id);
     _prefabName          = id;
     _bullet              = BulletsManager.GetInstance().CreateBulletGameObject(BulletType.Player_Simple, id);
     _trans               = _bullet.transform;
     _renderer            = _trans.Find("BulletSprite").GetComponent <SpriteRenderer>();
     _trans.localPosition = _curPos;
     _isRotatedByVAngle   = _bulletCfg.isRotatedByVAngle;
     _selfRotationAngle   = _bulletCfg.selfRotationAngle;
     // 碰撞相关参数
     _collisionRadius = _bulletCfg.collisionRadius;
 }
 public override void ChangeStyleById(string id)
 {
     if (_bullet != null)
     {
         UIManager.GetInstance().HideGo(_bullet);
         ObjectsPool.GetInstance().RestorePrefabToPool(_bulletCfg.textureName, _bullet);
     }
     _bulletCfg      = BulletsManager.GetInstance().GetPlayerBulletCfgById(id);
     _prefabName     = id;
     _bullet         = BulletsManager.GetInstance().CreateBulletGameObject(BulletType.Player_Laser, id);
     _trans          = _bullet.transform;
     _laserTf        = _trans.Find("Laser");
     _laserSr        = _laserTf.GetComponent <SpriteRenderer>();
     _laserSr.sprite = ResourceManager.GetInstance().GetSprite(_bulletCfg.packName, _bulletCfg.textureName);
     UIManager.GetInstance().AddGoToLayer(_bullet, LayerId.PlayerBarage);
     _texWidth              = 256;
     _repeatCount           = 2f;
     _laserTf.localPosition = new Vector3(_texWidth * _repeatCount / 2, 0, 0);
 }
Beispiel #16
0
    /// <summary>
    /// 创建PlayerLaser的原型
    /// </summary>
    /// <param name="bulletId"></param>
    /// <returns></returns>
    private GameObject CreatePlayerLaserProtoType(string bulletId)
    {
        GameObject original  = Resources.Load <GameObject>("BulletPrefab/PlayerLaser");
        GameObject protoType = GameObject.Instantiate <GameObject>(original);
        // 读取配置
        PlayerBulletCfg cfg = BulletsManager.GetInstance().GetPlayerBulletCfgById(bulletId.ToString());

        // 设置sprite以及material
        protoType.name = "PlayerLaser " + cfg.id;
        SpriteRenderer sp = protoType.transform.Find("Laser").GetComponent <SpriteRenderer>();

        sp.sprite = ResourceManager.GetInstance().GetSprite(cfg.packName, cfg.textureName);
        UIManager.GetInstance().AddGoToLayer(protoType, LayerId.PlayerBarage);
        // 添加原型到缓存池中
        ObjectsPool.GetInstance().AddProtoType(bulletId, protoType);
#if LogCreateBulletProto
        Logger.Log("Create ProtoType " + protoType.name);
#endif
        return(protoType);
    }
Beispiel #17
0
    private void RenderPlayerBullet()
    {
        Color col = new Color(127f / 255, 127f / 255, 192f / 255);
        List <PlayerBulletBase> list = BulletsManager.GetInstance().GetPlayerBulletList();

        //int count = list.Count;
        foreach (var bullet in list)
        {
            if (bullet != null && bullet.DetectCollision())
            {
                int nextIndex = 0;
                do
                {
                    CollisionDetectParas para = bullet.GetCollisionDetectParas(nextIndex);
                    RenderCollisionGraphic(para, col);
                    nextIndex = para.nextIndex;
                } while (nextIndex != -1);
            }
        }
    }
 public override void Init()
 {
     base.Init();
     _curPos = Vector2.zero;
     _existTime = 0;
     _existDuration = -1;
     BulletsManager.GetInstance().RegisterEnemyBullet(this);
     _isChangingWidth = false;
     _isChangingLength = false;
     _isChangingAlpha = false;
     _curWidth = _laserHalfWidth = 0;
     _curAlpha = 0;
     _isDirty = false;
     _collisionFactor = 0.5f;
     _isRotating = false;
     _isSourceEnable = false;
     _isTurningOn = false;
     _resistEliminateFlag |= (int)(eEliminateDef.HitPlayer | eEliminateDef.PlayerSpellCard);
     _movableObject = ObjectsPool.GetInstance().GetPoolClassAtPool<MovableObject>();
 }
Beispiel #19
0
    public void Clear()
    {
        PlayerInterface.GetInstance().Clear();
        _char = null;
        OperationController.GetInstance().Clear();
        ColliderManager.GetInstance().Clear();
        BulletsManager.GetInstance().Clear();
        EnemyManager.GetInstance().Clear();
        ItemManager.GetInstance().Clear();
        EffectsManager.GetInstance().Clear();
        ExtraTaskManager.GetInstance().Clear();
        BackgroundManager.GetInstance().Clear();
        STGStageManager.GetInstance().Clear();
        InterpreterManager.GetInstance().Clear();
        SoundManager.GetInstance().Clear(true);
#if ShowCollisionViewer
        CollisionViewer.Instance.Clear();
#endif
        STGEliminateEffectManager.GetInstance().Clear();
    }
Beispiel #20
0
 public override void Init()
 {
     base.Init();
     _isMoving                  = false;
     _curTrailLen               = 0;
     _laserHalfWidth            = 5;
     _collisionRadius           = 3;
     _availableCount            = 0;
     _eliminateRangeListCount   = 0;
     _isCachedCollisionSegments = false;
     _collisionSegmentsList     = new List <Vector2>();
     _collisionSegmentsCount    = 0;
     _isPosModified             = false;
     _isInitPos                 = false;
     _isSourceEliminated        = false;
     if (_movableObj == null)
     {
         _movableObj = ObjectsPool.GetInstance().GetPoolClassAtPool <MovableObject>();
     }
     BulletsManager.GetInstance().RegisterEnemyBullet(this);
 }
 public override void SetStyleById(string id)
 {
     EnemyLinearLaserCfg cfg = BulletsManager.GetInstance().GetLinearLaserCfgById(id);
     if (cfg == null)
     {
         Logger.LogError("LaserCfg with id " + id + " is not exist!");
         return;
     }
     if ( _laserObj != null )
     {
         ObjectsPool.GetInstance().RestorePrefabToPool(_prefabName, _laserObj);
     }
     _cfg = cfg;
     _prefabName = _cfg.id;
     _laserObj = BulletsManager.GetInstance().CreateBulletGameObject(BulletType.Enemy_Laser, _cfg.id);
     _objTrans = _laserObj.transform;
     _laserTrans = _objTrans.Find("LaserSprite");
     _laser = _laserTrans.GetComponent<SpriteRenderer>();
     _sourceTf = _objTrans.Find("Source");
     _sourceSp = _sourceTf.GetComponent<SpriteRenderer>();
     _isDirty = true;
 }
Beispiel #22
0
    protected override void CheckCollisionWithEnemyBullet()
    {
        // 计算碰撞盒参数
        Vector2 lbPos = new Vector2(_curPos.x - _radius, _curPos.y - _radius);
        Vector2 rtPos = new Vector2(_curPos.x + _radius, _curPos.y + _radius);
        int     i, bulletCount;
        List <EnemyBulletBase> bulletList = BulletsManager.GetInstance().GetEnemyBulletList();
        EnemyBulletBase        bullet;

        bulletCount = bulletList.Count;
        for (i = 0; i < bulletCount; i++)
        {
            bullet = bulletList[i];
            // 判断是否要进行碰撞检测
            if (bullet != null &&
                bullet.ClearFlag == 0 &&
                bullet.CanBeEliminated(_eliminateType) &&
                bullet.CheckBoundingBoxesIntersect(lbPos, rtPos))
            {
                DetectCollisionWithEnemyBullet(bullet);
            }
        }
    }
Beispiel #23
0
 public static int ClearAllEnemyBullets(ILuaState luaState)
 {
     BulletsManager.GetInstance().ClearAllEnemyBullets();
     return(0);
 }
Beispiel #24
0
    public void Update()
    {
        CommandManager.GetInstance().RunCommand(CommandConsts.STGFrameStart);

#if CheckSTGFrameTime
        int    index          = 0;
        long[] timeArr        = new long[20];
        long   frameBeginTime = Stopwatch.GetTimestamp();
        _opController.Update();
        STGStageManager.GetInstance().Update();
        timeArr[index++] = Stopwatch.GetTimestamp();
        ColliderManager.GetInstance().UpdateFields();
        timeArr[index++] = Stopwatch.GetTimestamp();
        ExtraTaskManager.GetInstance().Update();
        timeArr[index++] = Stopwatch.GetTimestamp();
        _char.Update();
        timeArr[index++] = Stopwatch.GetTimestamp();
        EnemyManager.GetInstance().Update();
        timeArr[index++] = Stopwatch.GetTimestamp();
        BulletsManager.GetInstance().Update();
        timeArr[index++] = Stopwatch.GetTimestamp();
        ItemManager.GetInstance().Update();
        timeArr[index++] = Stopwatch.GetTimestamp();
        ColliderManager.GetInstance().UpdateColliders();
        timeArr[index++] = Stopwatch.GetTimestamp();
        EffectsManager.GetInstance().Update();
        timeArr[index++] = Stopwatch.GetTimestamp();
        BulletsManager.GetInstance().Render();
        timeArr[index++] = Stopwatch.GetTimestamp();
        AnimationManager.GetInstance().Update();
        timeArr[index++] = Stopwatch.GetTimestamp();
        BackgroundManager.GetInstance().Update();
        timeArr[index++] = Stopwatch.GetTimestamp();
        frameNode++;
        long frameEndTime = Stopwatch.GetTimestamp();
        if (frameEndTime - frameBeginTime >= 50000)
        {
            string logStr = "Frame " + STGStageManager.GetInstance().GetFrameSinceStageStart() + " cost time " + (frameEndTime - frameBeginTime) * 0.0001d + "ms\n";
            index   = 0;
            logStr += "STGStageManager Update Cost Time = " + (timeArr[index] - frameBeginTime) * 0.0001d + "ms\n";
            logStr += "GravitationFields Update Cost Time = " + (timeArr[++index] - timeArr[index - 1]) * 0.0001d + "ms\n";
            logStr += "ExtraTaskManager Update Cost Time = " + (timeArr[++index] - timeArr[index - 1]) * 0.0001d + "ms\n";
            logStr += "Character Update Cost Time = " + (timeArr[++index] - timeArr[index - 1]) * 0.0001d + "ms\n";
            logStr += "EnemyManager Update Cost Time = " + (timeArr[++index] - timeArr[index - 1]) * 0.0001d + "ms\n";
            logStr += "BulletsManager Update Cost Time = " + (timeArr[++index] - timeArr[index - 1]) * 0.0001d + "ms\n";
            logStr += "ItemManager Update Cost Time = " + (timeArr[++index] - timeArr[index - 1]) * 0.0001d + "ms\n";
            logStr += "Colliders Update Cost Time = " + (timeArr[++index] - timeArr[index - 1]) * 0.0001d + "ms\n";
            logStr += "EffectsManager Update Cost Time = " + (timeArr[++index] - timeArr[index - 1]) * 0.0001d + "ms\n";
            logStr += "BulletsManager Render Cost Time = " + (timeArr[++index] - timeArr[index - 1]) * 0.0001d + "ms\n";
            logStr += "AnimationManager Update Cost Time = " + (timeArr[++index] - timeArr[index - 1]) * 0.0001d + "ms\n";
            logStr += "BackgroundManager Update Cost Time = " + (timeArr[++index] - timeArr[index - 1]) * 0.0001d + "ms\n";
            Logger.LogWarn(logStr);
            CommandManager.GetInstance().RunCommand(CommandConsts.LogFrameStatistics);
            Logger.Log("------------------------------------------------");
        }
#else
        //if (frameNode == 200)
        //{
        //    _lastFrameTicks = System.DateTime.Now.Ticks;
        //}
        //else if (frameNode > 200 && frameNode <= 300)
        //{
        //    long currentTicks = System.DateTime.Now.Ticks;
        //    Logger.Log("Frame Interval = " + (currentTicks - _lastFrameTicks) * 0.0001f);
        //    _lastFrameTicks = currentTicks;
        //}
        // 每帧开始
        BulletsManager.GetInstance().OnSTGFrameStart();
        // 逻辑部分
        _opController.Update();
        STGStageManager.GetInstance().Update();
        ExtraTaskManager.GetInstance().Update();
        ColliderManager.GetInstance().UpdateFields();
        _char.Update();
        EnemyManager.GetInstance().Update();
        BulletsManager.GetInstance().Update();
        ItemManager.GetInstance().Update();
        ColliderManager.GetInstance().UpdateColliders();
        EffectsManager.GetInstance().Update();
        // 渲染部分
        BulletsManager.GetInstance().Render();
        EnemyManager.GetInstance().Render();
        STGEliminateEffectManager.GetInstance().Render();
        ItemManager.GetInstance().Render();
        AnimationManager.GetInstance().Update();
        BackgroundManager.GetInstance().Update();
#if ShowCollisionViewer
        CollisionViewer.Instance.Render();
#endif
        //if (frameNode == 0)
        //    FPSController.GetInstance().Restart(true);
        frameNode++;
        //if (frameNode % 60 == 0)
        //{
        //   STGBulletEliminateEffect1 effect =  EffectsManager.GetInstance().CreateEffectByType(EffectType.BulletEliminate) as STGBulletEliminateEffect1;
        //    effect.SetColor(1, 0, 0, 1);
        //}
#endif
        //if ( frameNode == 200 )
        //{
        //    List<object> datas = new List<object>();
        //    float centerX = -130;
        //    float centerY = 180;
        //    float radius = 70;
        //    float distortFactor = 0.1f;
        //    Color effectColor = new Color(0.62f, 0.22f, 0.61f, 1f);
        //    datas.Add(centerX);
        //    datas.Add(centerY);
        //    datas.Add(radius);
        //    datas.Add(distortFactor);
        //    datas.Add(effectColor);
        //    CommandManager.GetInstance().RunCommand(CommandConsts.UpdateBgDistortEffectProps, datas.ToArray());
        //}
        //if ( frameNode == 200 )
        //{
        //    STGBurstEffect effect = EffectsManager.GetInstance().CreateEffectByType(EffectType.BurstEffect) as STGBurstEffect;
        //    effect.SetSize(128);
        //    effect.SetToPos(0, 150);
        //}
        //if (frameNode == 200)
        //{
        //    TimeUtil.BeginSample();
        //    STGChargeEffect effect = EffectsManager.GetInstance().CreateEffectByType(EffectType.ChargeEffect) as STGChargeEffect;
        //    effect.SetToPos(0, 100);
        //    TimeUtil.EndSample();
        //}
        //if (frameNode >= 200 && frameNode % 2 == 0 )
        //{
        //    STGBulletEliminateEffect effect = EffectsManager.GetInstance().CreateEffectByType(EffectType.BulletEliminate) as STGBulletEliminateEffect;
        //    effect.SetToPos(Random.Range(-8, 8), Random.Range(-8, 8));
        //    effect.SetColor(Random.value, Random.value, Random.value, 1);
        //}
    }