QFramework-类幸存者笔记-3:更新框架 & 游戏失败后重新开始-敌人受伤-游戏结束简单闭环

目录

更新框架 & 游戏失败后重新开始

敌人距离主角一定范围内受伤

游戏结束


特别感谢:

本文是凉鞋的QFramework-类幸存者 教程的学习笔记

https://qframework.cn/qf​编辑https://qframework.cn/qfhttps://qframework.cn/qficon-default.png?t=N7T8https://qframework.cn/qfhttps://qframework.cn/qf​编辑https://qframework.cn/qf QF官网:有详细免费入门教程


更新框架 & 游戏失败后重新开始

紧接上篇,碰撞后显示游戏结束界面,按空格重新开始

UIGameOverPanel脚本打开

protected override void OnInit(IUIData uiData = null)
		{
			mData = uiData as UIGameoverPanelData ?? new UIGameoverPanelData();
			//按下空格键重新加载SampleScene
			ActionKit.OnUpdate.Register(() =>
			{
				if (Input.GetKeyDown(KeyCode.Space))
				{
					this.CloseSelf();//关闭当前页面
					SceneManager.LoadScene("SampleScene");
				}
			}
				).UnRegisterWhenGameObjectDestroyed(gameObject);
		}

敌人距离主角一定范围内受伤

给player一个空物体Abilities-创建一个SimpleAbility。在Scrips文件里面Game中添加一个Ablity文件。然后给SimpleAbility alt+v 创建View Controller脚本再改一下脚本目录-生成代码即可。

生成代码后填写受伤判断

using UnityEngine;
using QFramework;

namespace ProjectSurvivor
{
	public partial class SimpleAbility : ViewController
	{
		private float mCurrentSeconds = 0;
		void Start()
		{
			// Code Here
		}

		private void Update()
		{
			//做一个计时器
			mCurrentSeconds +=Time.deltaTime;

			if (mCurrentSeconds > 1.5f)
			{
				mCurrentSeconds = 0;
				//得到敌人
				var enemies = FindObjectsByType<Enemy>(FindObjectsInactive.Exclude, FindObjectsSortMode.None);
				//判断与敌人的距离
				foreach (var enemy in enemies)
				{
					//距离
					var distance = (Player.Default.transform.position - enemy.transform.position).magnitude;
					if (distance<=5)
					{
						enemy.Sprite.color = Color.red;
						//enemy缓存一下引用
						var enemyRefCache = enemy;
						ActionKit.Delay(0.3f,() =>
						{
							enemy.Sprite.color = Color.white;
						}).StartGlobal();
					}
                }
				
			}
		}
	}
}

游戏结束

简单实现主角攻击三次敌人,敌人死亡游戏结束。

首先给敌人定义一个HP=3当HP<=0时,打开UIgamePassPanel,再销毁自己。

private void Update()
		{

			if (Player.Default)
			{
                var direction = (Player.Default.transform.position - transform.position).normalized;

                transform.Translate(direction * Time.deltaTime * MovementSpeed);
            }

			if (HP<=0)
			{
				UIKit.OpenPanel<UIGamePassPanel>();
				this.DestroyGameObjGracefully();
			}
        }

SimpleAbility脚本在判断时添加HP--

复制生成一个UIGamePassPanel

改了要记得在Overrides里面Apply all

然后在Assets-Art-UIprefab-UIGamePassPanel右键@Resikit-AssetBundle Mark再点一下alt+c生成代码-运行。添加按下空格重新开始代码。

using UnityEngine;
using UnityEngine.UI;
using QFramework;
using UnityEngine.SceneManagement;

namespace ProjectSurvivor
{
	public class UIGamePassPanelData : UIPanelData
	{
	}
	public partial class UIGamePassPanel : UIPanel
	{
		protected override void OnInit(IUIData uiData = null)
		{
			mData = uiData as UIGamePassPanelData ?? new UIGamePassPanelData();
            // please add init code here
            ActionKit.OnUpdate.Register(() =>
            {
                if (Input.GetKeyDown(KeyCode.Space))
                {
                    this.CloseSelf();//关闭当前页面
                    SceneManager.LoadScene("SampleScene");
                }
            }
                ).UnRegisterWhenGameObjectDestroyed(gameObject);
        }
		
		protected override void OnOpen(IUIData uiData = null)
		{
		}
		
		protected override void OnShow()
		{
		}
		
		protected override void OnHide()
		{
		}
		
		protected override void OnClose()
		{
		}
	}
}

简单闭环完成,接下来是完善优化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值