Пример #1
0
    //游戏中
    public void OnPlaying()
    {
        if (PlayingCharacter)
        {
            //玩家生成
            if (UnitZ.playerSave && PlayingCharacter.IsAlive)
            {
                //玩家存活
                if (Time.time >= timeTemp + SaveInterval)
                {
                    timeTemp = Time.time;
                    if (SavePlayer)
                    {
                        PlayingCharacter.SaveCharacterData(SaveToServer);
                    }
                }
                //玩家存活,关闭失败面板
                if (UnitZ.Hud.IsPanelOpened("Lose"))
                {
                    UnitZ.Hud.ClosePanelByName("Lose");
                }
                timeAlivetmp = Time.time;
            }

            if (!PlayingCharacter.IsAlive)
            {
                //玩家死亡
                if (AutoRespawn)
                {
                    //自动重新生成
                    respawnTimer = (timeAlivetmp + AutoRespawnDelay) - Time.time;
                    if (Time.time > timeAlivetmp + AutoRespawnDelay)
                    {
                        Respawn(-1);
                        UnitZ.Hud.ClosePanelByName("Lose");
                        Debug.Log("Chaacter respawned (" + Time.timeSinceLevelLoad + ")");
                    }
                }
                else
                {
                    if (!UnitZ.Hud.IsPanelOpened("Lose") && !spectreMode)
                    {
                        UnitZ.Hud.OpenPanelByName("Lose");
                    }
                }
            }
        }
        else
        {
            // 如果玩家仍然不存在,则寻找玩家
            findPlayerCharacter();
            if (PlayingCharacter == null)
            {
                //Debug.LogWarning ("Can't find player (CharacterSystem) object in the scene. this is may drain game performance (" + Time.timeSinceLevelLoad + ")");
            }
        }

        //玩家在游戏,且玩家已经死亡
        if (Spectre != null && PlayingCharacter)
        {
            //玩家已死亡
            if (!PlayingCharacter.IsAlive)
            {
                Spectre.Active(true);
            }
            else
            {
                Spectre.Active(false);
                Spectre.LookingAt(PlayingCharacter.gameObject.transform.position);
                PlayingCharacter.spectreThis = true;
            }
        }
        else
        {
            Spectre = (SpectreCamera)GameObject.FindObjectOfType(typeof(SpectreCamera));
            if (Spectre == null)
            {
                //Debug.LogWarning ("Can't find (SpectreCamera) object in the scene. this is may drain game performance (" + Time.timeSinceLevelLoad + ")");
            }
        }
    }
Пример #2
0
    public void OnPlaying()
    {
        if (PlayingCharacter)
        {
            // player spawned
            if (UnitZ.playerSave && PlayingCharacter.IsAlive)
            {
                // player alive
                if (Time.time >= timeTemp + SaveInterval)
                {
                    timeTemp = Time.time;
                    if (SavePlayer)
                    {
                        PlayingCharacter.SaveCharacterData(SaveToServer);
                    }
                }
                // if close Lose GUI if player alive
                if (UnitZ.Hud.IsPanelOpened("Lose"))
                {
                    UnitZ.Hud.ClosePanelByName("Lose");
                }
                timeAlivetmp = Time.time;
            }

            if (!PlayingCharacter.IsAlive)
            {
                // player is dying
                if (AutoRespawn)
                {
                    // auto matic respawned
                    respawnTimer = (timeAlivetmp + AutoRespawnDelay) - Time.time;
                    if (Time.time > timeAlivetmp + AutoRespawnDelay)
                    {
                        Respawn(-1);
                        UnitZ.Hud.ClosePanelByName("Lose");
                        Debug.Log("Chaacter respawned (" + Time.timeSinceLevelLoad + ")");
                    }
                }
                else
                {
                    if (!UnitZ.Hud.IsPanelOpened("Lose") && !spectreMode)
                    {
                        if (ShowDeadUI)
                        {
                            UnitZ.Hud.OpenPanelByName("Lose");
                        }
                    }
                }
            }
        }
        else
        {
            // if player still not exist, keep looking for a player
            findPlayerCharacter();
            if (PlayingCharacter == null)
            {
                //Debug.LogWarning ("Can't find player (CharacterSystem) object in the scene. this is may drain game performance (" + Time.timeSinceLevelLoad + ")");
            }
        }

        if (Spectre != null && PlayingCharacter)
        {
            // spectre dead player
            if (!PlayingCharacter.IsAlive)
            {
                // if player dead spectre mode enabled
                Spectre.Active(true);
            }
            else
            {
                Spectre.Active(false);
                Spectre.LookingAt(PlayingCharacter.gameObject.transform.position);
                PlayingCharacter.spectreThis = true;
            }
        }
        else
        {
            Spectre = (SpectreCamera)GameObject.FindObjectOfType(typeof(SpectreCamera));
            if (Spectre == null)
            {
                //Debug.LogWarning ("Can't find (SpectreCamera) object in the scene. this is may drain game performance (" + Time.timeSinceLevelLoad + ")");
            }
        }
    }