/// <summary> /// 场景加载完成回调 /// </summary> /// <param name="scene">加载完成的场景</param> /// <param name="arg1">加载模式</param> private void OnSceneLoaded(Scene scene, LoadSceneMode arg1) { if (SceneUtil.IsGameScene(scene.name)) { UiManager.Instance.ShowSceneNameOnUi(scene.name); QMhelper.SetActive(true); Player.ShowPlayer(Vector3.zero); if (PixelCameraFollower != null) { PixelCameraFollower.m_Target = Player.transform; return; } if (miniPixelCameraFollower != null) { miniPixelCameraFollower.m_Target = Player.transform; return; } } else { Player.HidePlayer(); QMhelper.SetActive(false); } }
public virtual void ShowPlayer(Vector3 pos) { ResumeControl(); gameObject.SetActive(true); transform.position = pos; Health.invincible = false; Health.dead = false; Health.health = (int)QMhelper.GetMaxHpVal(); QMhelper.SetCurrentHp(Health.health); if (CurrWeapon == null) { return; } if (CurrWeapon.weaponData is GunInfo info) { // TODO: 重生子弹 info.clipCapacity = 100; info.remainingBullet = 500; EventCenter.Broadcast(EventManager.EventType.UpdateAmmo, info.clipCapacity, info.remainingBullet); } SetupWeaponIco(); // 更新 Exp Ui ExpManager.Instance.AddExp(0); GameManager.Instance.PlayerInfo.OperateCoin(0); GetComponent <BoxCollider2D>().enabled = true; }
/// <summary> /// 加血 /// </summary> /// <param name="amount">加血值</param> /// <returns></returns> public bool TakeHeal(int amount) { if (dead || Math.Abs(health - QMhelper.GetMaxHpVal()) < 0.1f) { return(false); } health = (int)Mathf.Min(QMhelper.GetMaxHpVal(), health + amount); Actor.SetTakeHealth(); return(true); }
/// <summary> /// 设置收到打击动画 /// </summary> public override void SetTakeHit(int amount) { if (Fsm.State != States.Normal) { return; } base.SetTakeHit(amount); //TODO: 被打动画 // if (!animator.GetCurrentAnimatorStateInfo(0).IsName("TakeHit")) animator.Play("TakeHit"); QMhelper.SetCurrentHp(Health.health); if (CameraShaker.Instance != null) { CameraShaker.InitShake(0.075f, 2f); } }
/// <summary> /// 添加 <see cref="SkillPack"/> 的支持 /// </summary> public void SavePlayerInfo() { Debug.Log("---------SAVE TO FILE----------"); PlayerInfo.weapons.Clear(); foreach (var weapon in Player.WeaponBag) { PlayerInfo.weapons.Add(weapon.weaponData); } PlayerInfo.exp = ExpManager.Instance.Exp; PlayerInfo.level = ExpManager.Instance.Level; PlayerInfo.score = ScoreManager.Instance.Score; var formatter = new BinaryFormatter(); Stream stream = new FileStream("Data.bin", FileMode.Create, FileAccess.Write, FileShare.None); formatter.Serialize(stream, PlayerInfo); stream.Close(); QMhelper.Save(); new Notification.Builder("Game Data", "Game data has been saved.").Show(); }
private void Awake() { Instance = this; EventCenter.AddListener <int, int>(EventManager.EventType.UpdateAmmo, SetAmmoInfo); EventCenter.AddListener <Song>(EventManager.EventType.SetUpMusicInfo, UpdateMusicName); EventCenter.AddListener <int>(EventManager.EventType.UpdateHits, UpdateHits); EventCenter.AddListener <int>(EventManager.EventType.UpdateCoin, UpdateCoin); EventCenter.AddListener <ExpManager.LevelDataPack>(EventManager.EventType.UpdateLevel, UpdateLevel); _hitCanvasGroup = hitInfo.GetComponent <CanvasGroup>(); _hitsAnimator = hitInfo.GetComponent <Animator>(); var scale = GetComponent <CanvasScaler>(); var sws = Screen.width / scale.referenceResolution.x; var shs = Screen.height / scale.referenceResolution.y; scale.matchWidthOrHeight = sws > shs ? 1 : 0; _pauseButtonCanvasGroup = pauseButton.GetComponent <CanvasGroup>(); QMhelper.SetupCoinText(coinText); QMhelper.SetupHpText(hpText); }
// 加血 public override void SetTakeHealth() { // HealthBar.SetHearts(Health.health); QMhelper.SetCurrentHp(Health.health); }
/// <summary> /// 加载玩家信息 /// TODO:加载存档选项 /// </summary> public void LoadPlayerInfo() { QMhelper.Load(); var fileInfo = new FileInfo("Data.bin"); // if (fileInfo.Exists) if (false) { Debug.Log("---------READ FROM FILE----------"); Debug.Log("Path: " + fileInfo.Directory); var formatter = new BinaryFormatter(); Stream stream = new FileStream("Data.bin", FileMode.Open, FileAccess.Read, FileShare.Read); PlayerInfo = (PlayerInfo)formatter.Deserialize(stream); #if UNITY_EDITOR Debug.Log(PlayerInfo.ToString()); #endif } else { Debug.Log("---------NEW DATA----------"); // New skills (Common skill) var skillDodge = new CommonSkillDetail.Builder(SkillType.DodgeNone, 0, "DodgeNone").SetColdDownTime(0) .Build(); var skillWpNone = new CommonSkillDetail.Builder(SkillType.WpNone, 0, "WpNone").SetColdDownTime(0) .Build(); var skillDis = new CommonSkillDetail.Builder(SkillType.Displacement, 0, "Displacement") .SetColdDownTime(0.5f).Build(); // Data and skill order var skillList = new List <SkillDetail> { new CommonSkillDetail.Builder(SkillType.FireBall, 0, "FireBall").SetColdDownTime(0.5f).Build(), new CommonSkillDetail.Builder(SkillType.LightningBolt, 0, "LightningBolt").SetColdDownTime(2f) .Build(), skillDodge, skillWpNone, skillDis }; // Skill-pack (All skills) var skillPack = new SkillPack( skillDodge, skillWpNone, skillDis, skillList ); // TODO: 玩家昵称设置 PlayerInfo = new PlayerInfo("Player", new List <WeaponData>(), skillPack); } var playerGo = Instantiate(ResourceLoader.PlayerRes, new Vector3(16.5f, -71), Quaternion.Euler(Vector3.zero)); Player = playerGo.GetComponent <BasePlayer>(); Player.Health.health = (int)QMhelper.GetMaxHpVal(); QMhelper.SetupPlayer(Player.gameObject); ExpManager.Instance.Level = PlayerInfo.level; ExpManager.Instance.Exp = PlayerInfo.exp; PlayerInfo.OperateCoin(0, true); var player = Player; // Init if CommonPlayer if (Player is CommonPlayer commonPlayer) { commonPlayer.SkillManager.Init(ref player, ref PlayerInfo.skillPack); foreach (var weaponRes in PlayerInfo.weapons.Select(data => Resources.LoadAsync <Weapon>("Prefabs/Weapons/" + data.weaponName + "/" + data.weaponName))) { weaponRes.completed += operation => { commonPlayer.EquipWeapon((Weapon)weaponRes.asset, true); Debug.Log("LoadDone"); }; } } PixelCameraFollower.m_Target = Player.transform; // 设置小地图 if (miniPixelCameraFollower != null) { miniPixelCameraFollower.m_Target = Player.transform; } DontDestroyOnLoad(playerGo); }
/// <summary> /// 加血 /// </summary> public override void SetTakeHealth() { QMhelper.SetCurrentHp(Health.health); }