Unity3D 委托和事件的优点(一)

2023-05-16

  上周接触到了委托,这周终于在自己的项目中用到了,现在准备用委托和事件的方案替换掉之前的一些使用不足的解决方案!

  在此感谢前辈们的优秀文章,我是根据在网上阅读的文章,通过自己的见解,并在自己的项目中进行实践,得出了一些结论与大家分享,我认为这样可以更好的提高我对委托的使用熟练的程度.

  因为刚刚接触到委托可能只是个人的小小的见解,希望可以给大家一些启示,起到抛砖引玉的作用!

(一) 先介绍一下之前项目中使用不足的解决方案.

  1) 需要解决的问题:  需要实现,在点击下升级怪物按钮时,通知所有的世界中的怪物,来进行属性的增加!

  2) 解决方案: 创建一个空物体(Monster_Manager)用于保存世界中的怪物,再通过Unity3D引擎自带的回调方法BroadcastMessage("方法名") ->"作用是找到包括自己和自己子对象中是否有该方法,如果有该方法就执行".    写入一个脚本,在升级完成后,使用上面的回调方法,通知自己和子物体.

这是我在Monster_Manager上挂的脚本:

using UnityEngine;
using System.Collections;
/// <summary>
/// 功能:控制地精战士管理器下的子物体升级后的方法执行
/// 创建者: VioletTD
/// 修改时间: 2013年11月11日 21:38
/// 感谢: Me 加油!
/// </summary>

public class OrcWarriorMonsterManager : MonoBehaviour {
	
	void Update () {
		if (MonsterPanelUIModel.isUpgradeComplete_2) //@@@@@@@@@ 如果怪物二升级完成 @@@@@@@@@   
		{
			BroadcastMessage("OrcWarriorMonster_Grade_Controller");//*************************** 发送消息通知本身和子物体全部执行该方法 ***************************
		}
	}
}

  通过查找网络上的资料,关于Unity3D自己封装的Message方法(由一个物体通知其他(或子物体)(期间需要查找对象,在脚本中需找对应的方法......)来执行一个方法是相当耗费资源的),所以我说这是一个,不足不利于我们开发程序的解决方案!当然建议大家尽量不要使用该方法!


(二) 现在才是重点,其实很简单,大家注意看咯!

  1) 需要解决的问题:  需要实现,在点击下升级怪物按钮时,通知所有的世界中的怪物,来进行属性的增加!

  2) 解决方案: ①我设置了一个全局的游戏对象添加(GameManager脚本),在该脚本下写一个委托事件,用于控制怪物的升级的属性提升.②在每个怪物个更新方法中添加判断,如果升级成功,就把怪物的升级属性增加的方法作为事件,添加到全局的委托事件! 根据事件的特性,事件中的所用"方法事件"都会执行! 这样就完成了所有怪物的升级属性增加了! 


这是GameManager脚本,记得一定要挂在全局的实例化游戏对象上啊
using UnityEngine;
using System.Collections;
/// <summary>
/// 功能:控制全局变量的游戏管理器
/// 创建者: VioletTD
/// 修改时间: 2013年11月10日 22:18
/// 感谢: Me 加油!
/// </summary>
public class GameManager : Singleton<GameManager> {
	public delegate void Game_UpgradeMonster2_Manager();//*************************** 定义一个无参的管理怪物二的升级委托 ***************************
	public event Game_UpgradeMonster2_Manager Game_ExecuteUpgradeMonster2_Manager;//*************************** 定义委托事件,用于条件判断并执行怪物的升级管理事件 ***************************
	void Update()//*************************** Unity3D自带的回调更新方法 ***************************
	{
		if (MonsterPanelUIModel.isUpgradeComplete_2) //@@@@@@@@@ 如果怪物二升级完成 @@@@@@@@@   
		{
			Game_ExecuteUpgradeMonster2_Manager();//*************************** 如果怪物二升级完成,就执行怪物升级的事件 ***************************
		}
	}
}

这是在怪物自己控制脚本 Update()中的判断

void Update () 
	{

		if(MonsterPanelUIModel.isUpgradeComplete_2)//@@@@@@@@@ 如果怪物二升级完成 @@@@@@@@@
		{
			GameManager.Instance.Game_ExecuteUpgradeMonster2_Manager += OrcWarriorMonster_Grade_Controller;//*************************** 就把怪物升级属性增加添加到委托事件中 ***************************
		}
	}

这是升级属性增加的方法(可以忽略)

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 地精战士等级提升模块 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	
	//-------------------------------------------------------------------------------------------- 地精战士不同等级的属性的变化的方法 --------------------------------------------------------------------------------------------
	void OrcWarriorMonster_Grade_Controller()
	{
		switch (OrcWarriorMonsterModel.OrcWarriorMonster_Grade_Model) {//@@@@@@@@@ 判断全局的怪物二的等级 @@@@@@@@@   
		case MonsterGrade.Zero://@@@@@@@@@ 如果是零级 @@@@@@@@@   
		{
			orcWarriorMonster_Model.Monster_STR_Model = 23.5f;//*************************** 地精战士的力量为二十 ***************************
			orcWarriorMonster_Model.Monster_HP_Model = 
				orcWarriorMonster_Model.Monster_STR_Model * 10f + orcWarriorMonster_Model.Monster_SPD_Model * 2f + orcWarriorMonster_Model.Monster_VIS_Model * 1f;//*************************** 地精战士的血量等于力量乘十加敏捷乘二加智力乘一 ***************************
			orcWarriorMonster_Model.Monster_CurrentHP_Model =orcWarriorMonster_Model.Monster_HP_Model;//*************************** 地精战士的当前血量 ***************************
			orcWarriorMonster_Model.Monster_ATK_Model = orcWarriorMonster_Model.Monster_STR_Model * 1.7f + orcWarriorMonster_Model.Monster_SPD_Model * 0.5f;//*************************** 地精战士的攻击力力量乘一点七加敏捷乘零点五 ***************************
			orcWarriorMonster_Model.Monster_DEF_Model = orcWarriorMonster_Model.Monster_STR_Model * 0.6f;//*************************** 地精战士的防御力等于力量乘二 ***************************
			orcWarriorMonster_Model.Monster_DEX_Model = 13f;//*************************** 地精战士的敏捷为十三 ***************************
			orcWarriorMonster_Model.Monster_SPD_Model = orcWarriorMonster_Model.Monster_DEX_Model * 0.1f - orcWarriorMonster_Model.Monster_STR_Model * 0.05f;//*************************** 地精战士的速度为敏捷乘零点一减去力量乘零点零三 ***************************
			orcWarriorMonster_Model.Monster_CRT_Model = (orcWarriorMonster_Model.Monster_DEX_Model + orcWarriorMonster_Model.Monster_STR_Model * 0.4f) * 0.01f;//*************************** 地精战士的暴击为敏捷加上力量乘零点四的和换算为百分比 ***************************
			orcWarriorMonster_Model.Monster_ASD_Model = orcWarriorMonster_Model.Monster_DEX_Model * 0.05f + orcWarriorMonster_Model.Monster_STR_Model * 0.02f;//*************************** 地精战士的攻速为敏捷乘零点五加上力量乘零点二的和 ***************************
			orcWarriorMonster_Model.Monster_VIS_Model = 5f;//*************************** 地精战士的智力为五 ***************************
			orcWarriorMonster_Model.Monster_MP_Model =orcWarriorMonster_Model.Monster_VIS_Model * 4f;//*************************** 地精战士的魔法值为智力乘四 ***************************
			orcWarriorMonster_Model.Monster_CurrentMP_Model = orcWarriorMonster_Model.Monster_MP_Model;//*************************** 地精战士的当前魔法值 ***************************
			orcWarriorMonster_Model.Monster_INT_Model = orcWarriorMonster_Model.Monster_VIS_Model * 0.6f;//*************************** 地精战士的魔法攻击力为智力乘以零点六 ***************************
			orcWarriorMonster_Model.Monster_FCR_Model = 1/orcWarriorMonster_Model.Monster_VIS_Model * 0.2f;//*************************** 地精战士的施法时间魔法值乘0.2取反 ******************
			orcWarriorMonster_Model.Monster_FCRTimer_Model = orcWarriorMonster_Model.Monster_FCR_Model;//*************************** 地精战士的当前施法时间的计时器 ******************
			orcWarriorMonster_Model.Monster_NeedAP_Model = 50f;//*************************** 强化地精战士所需的强化值为五十 ******************
			orcWarriorMonster_Model.Monster_APNeedTime_Model = 10f;//*************************** 强化地精战士所需的时间为十 ******************
			GetComponent<NavMeshAgent>().speed = orcWarriorMonster_Model.Monster_SPD_Model;//*************************** 设置寻路组件的速度为地精战士的速度值 ***************************
			MonsterPanelUIModel.isUpgradeComplete_2 = false;//*************************** 已经完成升级的开关控制 归零 ***************************
			break;
		}
		case MonsterGrade.Primary://@@@@@@@@@ 如果是初级 @@@@@@@@@   
		{
			orcWarriorMonster_Model.Monster_STR_Model = 32f;//*************************** 地精战士的力量为二十 ***************************
			orcWarriorMonster_Model.Monster_HP_Model = 
				orcWarriorMonster_Model.Monster_STR_Model * 10f + orcWarriorMonster_Model.Monster_SPD_Model * 2f + orcWarriorMonster_Model.Monster_VIS_Model * 1f;//*************************** 地精战士的血量等于力量乘十加敏捷乘二加智力乘一 ***************************
			orcWarriorMonster_Model.Monster_CurrentHP_Model =orcWarriorMonster_Model.Monster_HP_Model;//*************************** 地精战士的当前血量 ***************************
			orcWarriorMonster_Model.Monster_ATK_Model = orcWarriorMonster_Model.Monster_STR_Model * 1.7f + orcWarriorMonster_Model.Monster_SPD_Model * 0.5f;//*************************** 地精战士的攻击力力量乘一点七加敏捷乘零点五 ***************************
			orcWarriorMonster_Model.Monster_DEF_Model = orcWarriorMonster_Model.Monster_STR_Model * 0.7f;//*************************** 地精战士的防御力等于力量乘二 ***************************
			orcWarriorMonster_Model.Monster_DEX_Model = 20f;//*************************** 地精战士的敏捷为十三 ***************************
			orcWarriorMonster_Model.Monster_SPD_Model = orcWarriorMonster_Model.Monster_DEX_Model * 0.1f - orcWarriorMonster_Model.Monster_STR_Model * 0.05f;//*************************** 地精战士的速度为敏捷乘零点一减去力量乘零点零三 ***************************
			orcWarriorMonster_Model.Monster_CRT_Model = (orcWarriorMonster_Model.Monster_DEX_Model + orcWarriorMonster_Model.Monster_STR_Model * 0.4f) * 0.01f;//*************************** 地精战士的暴击为敏捷加上力量乘零点四的和换算为百分比 ***************************
			orcWarriorMonster_Model.Monster_ASD_Model = orcWarriorMonster_Model.Monster_DEX_Model * 0.05f + orcWarriorMonster_Model.Monster_STR_Model * 0.02f;//*************************** 地精战士的攻速为敏捷乘零点五加上力量乘零点二的和 ***************************
			orcWarriorMonster_Model.Monster_VIS_Model = 8f;//*************************** 地精战士的智力为五 ***************************
			orcWarriorMonster_Model.Monster_MP_Model =orcWarriorMonster_Model.Monster_VIS_Model * 4f;//*************************** 地精战士的魔法值为智力乘四 ***************************
			orcWarriorMonster_Model.Monster_CurrentMP_Model = orcWarriorMonster_Model.Monster_MP_Model;//*************************** 地精战士的当前魔法值 ***************************
			orcWarriorMonster_Model.Monster_INT_Model = orcWarriorMonster_Model.Monster_VIS_Model * 0.6f;//*************************** 地精战士的魔法攻击力为智力乘以零点六 ***************************
			orcWarriorMonster_Model.Monster_FCR_Model = 1/orcWarriorMonster_Model.Monster_VIS_Model * 0.2f;//*************************** 地精战士的施法时间魔法值乘0.2取反 ******************
			orcWarriorMonster_Model.Monster_FCRTimer_Model = orcWarriorMonster_Model.Monster_FCR_Model;//*************************** 地精战士的当前施法时间的计时器 ******************
			orcWarriorMonster_Model.Monster_NeedAP_Model = 60f;//*************************** 强化地精战士所需的强化值为六十 ******************
			orcWarriorMonster_Model.Monster_APNeedTime_Model = 12f;//*************************** 强化地精战士所需的时间为十二 ******************
			GetComponent<NavMeshAgent>().speed = orcWarriorMonster_Model.Monster_SPD_Model;//*************************** 设置寻路组件的速度为地精战士的速度值 ***************************
			MonsterPanelUIModel.isUpgradeComplete_2 = false;//*************************** 已经完成升级的开关控制 归零 ***************************
			break;
		}
		case MonsterGrade.Middle://@@@@@@@@@ 如果是中级 @@@@@@@@@   
		{
			orcWarriorMonster_Model.Monster_STR_Model = 45f;//*************************** 地精战士的力量为二十 ***************************
			orcWarriorMonster_Model.Monster_HP_Model = 
				orcWarriorMonster_Model.Monster_STR_Model * 10f + orcWarriorMonster_Model.Monster_SPD_Model * 2f + orcWarriorMonster_Model.Monster_VIS_Model * 1f;//*************************** 地精战士的血量等于力量乘十加敏捷乘二加智力乘一 ***************************
			orcWarriorMonster_Model.Monster_CurrentHP_Model =orcWarriorMonster_Model.Monster_HP_Model;//*************************** 地精战士的当前血量 ***************************
			orcWarriorMonster_Model.Monster_ATK_Model = orcWarriorMonster_Model.Monster_STR_Model * 1.7f + orcWarriorMonster_Model.Monster_SPD_Model * 0.5f;//*************************** 地精战士的攻击力力量乘一点七加敏捷乘零点五 ***************************
			orcWarriorMonster_Model.Monster_DEF_Model = orcWarriorMonster_Model.Monster_STR_Model * 0.8f;//*************************** 地精战士的防御力等于力量乘二 ***************************
			orcWarriorMonster_Model.Monster_DEX_Model = 26f;//*************************** 地精战士的敏捷为十三 ***************************
			orcWarriorMonster_Model.Monster_SPD_Model = orcWarriorMonster_Model.Monster_DEX_Model * 0.1f - orcWarriorMonster_Model.Monster_STR_Model * 0.05f;//*************************** 地精战士的速度为敏捷乘零点一减去力量乘零点零三 ***************************
			orcWarriorMonster_Model.Monster_CRT_Model = (orcWarriorMonster_Model.Monster_DEX_Model + orcWarriorMonster_Model.Monster_STR_Model * 0.4f) * 0.01f;//*************************** 地精战士的暴击为敏捷加上力量乘零点四的和换算为百分比 ***************************
			orcWarriorMonster_Model.Monster_ASD_Model = orcWarriorMonster_Model.Monster_DEX_Model * 0.05f + orcWarriorMonster_Model.Monster_STR_Model * 0.02f;//*************************** 地精战士的攻速为敏捷乘零点五加上力量乘零点二的和 ***************************
			orcWarriorMonster_Model.Monster_VIS_Model = 17f;//*************************** 地精战士的智力为五 ***************************
			orcWarriorMonster_Model.Monster_MP_Model =orcWarriorMonster_Model.Monster_VIS_Model * 4f;//*************************** 地精战士的魔法值为智力乘四 ***************************
			orcWarriorMonster_Model.Monster_CurrentMP_Model = orcWarriorMonster_Model.Monster_MP_Model;//*************************** 地精战士的当前魔法值 ***************************
			orcWarriorMonster_Model.Monster_INT_Model = orcWarriorMonster_Model.Monster_VIS_Model * 0.6f;//*************************** 地精战士的魔法攻击力为智力乘以零点六 ***************************
			orcWarriorMonster_Model.Monster_FCR_Model = 1/orcWarriorMonster_Model.Monster_VIS_Model * 0.2f;//*************************** 地精战士的施法时间魔法值乘0.2取反 ******************
			orcWarriorMonster_Model.Monster_FCRTimer_Model = orcWarriorMonster_Model.Monster_FCR_Model;//*************************** 地精战士的当前施法时间的计时器 ******************
			orcWarriorMonster_Model.Monster_NeedAP_Model = 70f;//*************************** 强化地精战士所需的强化值为七十 ******************
			orcWarriorMonster_Model.Monster_APNeedTime_Model = 15f;//*************************** 强化地精战士所需的时间为十五 ******************
			GetComponent<NavMeshAgent>().speed = orcWarriorMonster_Model.Monster_SPD_Model;//*************************** 设置寻路组件的速度为地精战士的速度值 ***************************
			MonsterPanelUIModel.isUpgradeComplete_2 = false;//*************************** 已经完成升级的开关控制 归零 ***************************
			break;
		}
		case MonsterGrade.advance://@@@@@@@@@ 如果是高级 @@@@@@@@@   
		{
			orcWarriorMonster_Model.Monster_STR_Model = 56f;//*************************** 地精战士的力量为二十 ***************************
			orcWarriorMonster_Model.Monster_HP_Model = 
				orcWarriorMonster_Model.Monster_STR_Model * 10f + orcWarriorMonster_Model.Monster_SPD_Model * 2f + orcWarriorMonster_Model.Monster_VIS_Model * 1f;//*************************** 地精战士的血量等于力量乘十加敏捷乘二加智力乘一 ***************************
			orcWarriorMonster_Model.Monster_CurrentHP_Model =orcWarriorMonster_Model.Monster_HP_Model;//*************************** 地精战士的当前血量 ***************************
			orcWarriorMonster_Model.Monster_ATK_Model = orcWarriorMonster_Model.Monster_STR_Model * 1.7f + orcWarriorMonster_Model.Monster_SPD_Model * 0.5f;//*************************** 地精战士的攻击力力量乘一点七加敏捷乘零点五 ***************************
			orcWarriorMonster_Model.Monster_DEF_Model = orcWarriorMonster_Model.Monster_STR_Model * 1f;//*************************** 地精战士的防御力等于力量乘二 ***************************
			orcWarriorMonster_Model.Monster_DEX_Model = 30f;//*************************** 地精战士的敏捷为十三 ***************************
			orcWarriorMonster_Model.Monster_SPD_Model = orcWarriorMonster_Model.Monster_DEX_Model * 0.1f - orcWarriorMonster_Model.Monster_STR_Model * 0.05f;//*************************** 地精战士的速度为敏捷乘零点一减去力量乘零点零三 ***************************
			orcWarriorMonster_Model.Monster_CRT_Model = (orcWarriorMonster_Model.Monster_DEX_Model + orcWarriorMonster_Model.Monster_STR_Model * 0.4f) * 0.01f;//*************************** 地精战士的暴击为敏捷加上力量乘零点四的和换算为百分比 ***************************
			orcWarriorMonster_Model.Monster_ASD_Model = orcWarriorMonster_Model.Monster_DEX_Model * 0.05f + orcWarriorMonster_Model.Monster_STR_Model * 0.02f;//*************************** 地精战士的攻速为敏捷乘零点五加上力量乘零点二的和 ***************************
			orcWarriorMonster_Model.Monster_VIS_Model = 20f;//*************************** 地精战士的智力为五 ***************************
			orcWarriorMonster_Model.Monster_MP_Model =orcWarriorMonster_Model.Monster_VIS_Model * 4f;//*************************** 地精战士的魔法值为智力乘四 ***************************
			orcWarriorMonster_Model.Monster_CurrentMP_Model = orcWarriorMonster_Model.Monster_MP_Model;//*************************** 地精战士的当前魔法值 ***************************
			orcWarriorMonster_Model.Monster_INT_Model = orcWarriorMonster_Model.Monster_VIS_Model * 0.6f;//*************************** 地精战士的魔法攻击力为智力乘以零点六 ***************************
			orcWarriorMonster_Model.Monster_FCR_Model = 1/orcWarriorMonster_Model.Monster_VIS_Model * 0.2f;//*************************** 地精战士的施法时间魔法值乘0.2取反 ******************
			orcWarriorMonster_Model.Monster_FCRTimer_Model = orcWarriorMonster_Model.Monster_FCR_Model;//*************************** 地精战士的当前施法时间的计时器 ******************
			orcWarriorMonster_Model.Monster_NeedAP_Model = 80f;//*************************** 强化地精战士所需的强化值为八十 ******************
			orcWarriorMonster_Model.Monster_APNeedTime_Model = 20f;//*************************** 强化地精战士所需的时间为二十 ******************
			GetComponent<NavMeshAgent>().speed = orcWarriorMonster_Model.Monster_SPD_Model;//*************************** 设置寻路组件的速度为地精战士的速度值 ***************************
			MonsterPanelUIModel.isUpgradeComplete_2 = false;//*************************** 已经完成升级的开关控制 归零 ***************************
			break;
		}
		}
	}

如果大家,还用什么不懂的,可以在评论中联系我哦,我经常在CSDN的,如果遇到什么问题需要用委托事件来解决的,也可以和我来讨论哦!

最后谢谢大家的支持,我会继续努力的!


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity3D 委托和事件的优点(一) 的相关文章

  • 什么是PN结

    FBI WARNING xff1a 本文是个人对PN结的理解 xff0c 若有错误 xff0c 望不吝赐教 xff0c 谢谢 xff01 二极管 三极管作为电路中的常见元件 xff0c 了解其工作原理是非常必要的 xff0c 但是在此之前
  • struct termios结构体详解

    一 数据成员 termios 函数族提供了一个常规的终端接口 xff0c 用于控制非同步通信端口 这个结构包含了至少下列成员 xff1a tcflag t c iflag 输入模式 tcflag t c oflag 输出模式 tcflag
  • PISSTV 树莓派慢扫描电视

    连接硬件 硬件 xff1a 树莓派 有驱动的摄像头 调试时需要usb wifi 配置树莓派 配置树莓派时要开启树莓派摄像头的支持 因为需要安装软件 xff0c 将树莓派连接到外网 测试摄像头拍照 使用raspistill命令进行拍照 ras
  • PID控制参数整定(调节方法)原理+图示+MATLAB调试

    序 首先最重要的是了解每个参数调节了系统响应的那些属性 xff0c 通过观察响应从而调节参数改变属性 PID的作用概述 xff1a 1 P产生响应速度和力度 xff0c 过小响应慢 xff0c 过大会产生振荡 xff0c 是I和D的基础 2
  • 关于VSCODE的插件 一

    官方API文档 1 要学好TypeScript 官方教程 1 1TypeScript是一门弱类型语言 强类型和弱类型主要是站在变量类型处理的角度进行分类的 这些概念未经过严格定义 xff0c 它们并不是属于语言本身固有的属性 xff0c 而
  • Pixhawk学习1——CMakeList.txt的解析

    在PX4的工程文件中 xff0c src modules下是具体的飞控代码 里面主要包含了传感器采集 姿态结算 姿态控制 xff0c 位置结算 位置控制等程序模块 在进行二次开发时 xff0c 需要添加的模块也是在这个文件夹里 每个文件夹里
  • Pixhawk学习2——uORB微对象请求代理及规则

    在Pixhawk中 xff0c 所有的功能被独立以进程模块为单位进行实现并工作 而每个进程模块都有一个 xff08 或多个 xff1f xff09 主题信息topic xff08 topic可以在Firmware msg里查看到所有的可使用
  • Pixhawk学习4——Commander相关分析

    Commander文件夹中的内容的作用主要为Pixhawk飞行模式的切换 该段程序会根据遥控器上的开关状态以及飞机飞行状态和各传感器性能状态进行判断 xff0c 最终实现飞行模式的切换 飞行模式切换主要涉及到以下几个文件 xff1a src
  • Pixhawk学习7——位置解算

    Pixhawk的位置解算分为两部分 xff0c 第一部分主要为传感器的数据获取 xff0c 而该部分最主要的就是GPS数据的提取 第二部分为与惯性器件之间的组合导航 组合导航的好处我就不用多说了 Pixhawk代码中目前主要有两处组合导航的
  • Pixhawk学习9——固定翼位置控制(L1控制+TECS总能量控制)

    本篇博客本来没有在之前的计划中 但由于最近项目上遇到了固定翼轨迹控制的一些问题 xff0c 所以就结合pix的程序学习总结了一下 不同于旋翼 xff0c 固定翼要实现位置变化必须得有一个轨迹变化过程 xff0c 因为它不像旋翼那样可以直接调
  • Pixhawk学习10.2——多旋翼位置控制

    10 1中介绍了目标位置点的计算逻辑 xff0c 知道下一时刻的目标位置后 xff0c 飞控需要根据当前位置进行计算 xff0c 依次得到期望速度 xff0c 期望拉力矢量 xff0c 期望姿态 至此就完成了多旋翼的位置控制 1 期望速度计
  • Http权威指南笔记(三)——HTTP报文

    前面介绍了URL是用于定位服务器上的资源 但是定位到资源后 xff0c 通过什么样的方式 规定来让客户端和服务端进行交流呢 xff1f 这就是本篇要介绍的HTTP报文 1 报文流 HTTP 报文是在 HTTP 应用程序之间发送的数据块 这些
  • 卡尔曼滤波算法详细推导

    一 预备知识 1 协方差矩阵 是一个维列向量 xff0c 是的期望 xff0c 协方差矩阵为 可以看出 协方差矩阵都是对称矩阵且是半正定的 协方差矩阵的迹是的均方误差 2 用到的两个矩阵微分公式 公式一 xff1a 公式二 xff1a 若是
  • 超声波测距实验

    超声波测距实验 超声波发射器向某一方向发射超声波 xff0c 在发射的同时开始计时 xff0c 超声波在空气中传播 xff0c 途中碰到障碍物就立即返回来 xff0c 超声波接收器收到反射波就立即停止计时 声波在空气中的传播速度为340m
  • Win7+Ubuntu双系统安装教程

    一 安装Win7 xff08 采用WinPE 43 gho xff09 1 设置笔记本电脑的BIOS xff0c 因为是安装win7 xff0c 最好采用Legacy模式 xff0c UEFI模式和win8 win10等以后的操作系统适配的
  • C语言——switch....case函数用法

    switch case函数用法 include lt stdio h gt int main int data char cdata printf 34 请输入一个数字 n 34 scanf 34 d 34 amp data switch
  • 计算机组成原理4(程序查询方式、程序中断方式、DMA方式及其I/O接口电路)

    文章目录 一 程序查询方式二 程序中断方式三 DMA方式 一 程序查询方式 1 程序查询方式的接口电路 2 符号说明 amp 与非门B工作触发器D完成触发器 3 程序查询工作过程 xff08 输入 xff09 xff08 1 xff09 当
  • FreeRTOS队列创建、发送和接收(备忘)

    目录 一 简介 1 1 开发环境 1 2 功能说明 二 动态创建队列 2 1 头文件声明 2 2 工程文件定义 2 3 创建队列 三 静态创建队列 3 1 头文件声明 3 2 工程文件定义 3 3 创建队列 四 写入消息 4 1 定义缓存变
  • 自动化面试题2

    一 画出 集电极开路 电压输出 互补输出 线性驱动输出 原理图 二 二进制 八进制 十进制以及十六进制之间的转化 三 PLC是什么 xff0c 并简述其优点和缺点 可编程控制器 xff08 Programmable Logic Contro
  • 【教程】win10 固态硬盘卡机卡死卡顿的真正原因!

    本人自从换了win10以后从来没卡过的电脑反正就是频繁的卡顿 xff0c 卡死 我试过以下方法 xff0c 有人说是微软拼音输入法的问题 xff0c 我直接更换了输入法 xff0c 这个效果是有 xff0c 卡机的频率降低了 xff0c 但

随机推荐

  • SizeChanged事件

    SizeChanged事件有的人不成功 xff0c 我也不知道什么原因不成功 xff0c 贴一下我成功的样子 xff01 xff01 xff01 Designer cs文件Form最下面放这个 this SizeChanged 43 61
  • centos7 安装docker

    sudo yum config manager add repo http mirrors aliyun com docker ce linux centos docker ce repo 出现以下内容则表示docker仓库配置成功 xff
  • 项目管理之启动:识别项目中的四类干系人

    干系人分析 指对项目干系人进行分析和归类 xff0c 有针对性地规划管理其核心诉求和期望 xff0c 让干系人可以更好地参与项目 xff0c 对项目产生积极影响 xff0c 从而更好地保障项目目标的成功达成 干系人分析的目的是什么呢 xff
  • 公平锁和非公平锁介绍,为什么要“非公平”?

    什么是公平和非公平 公平锁指的是按照线程请求的顺序 xff0c 来分配锁 xff1b 而非公平锁指的是不完全按照请求的顺序 xff0c 在一定情况下 xff0c 可以允许插队 但需要注意这里的非公平并不是指完全的随机 xff0c 不是说线程
  • 什么是自旋锁?自旋的好处和后果是什么呢?

    什么是自旋 自旋 可以理解为 自我旋转 xff0c 这里的 旋转 指 循环 xff0c 比如 while 循环或者 for 循环 自旋 就是自己在这里不停地循环 xff0c 直到目标达成 而不像普通的锁那样 xff0c 如果获取不到锁就进入
  • Bluez去掉绝对音量支持

    修改bluez 5 37中 profiles audio avrcp c 去掉改支持AVRCP EVENT VOLUME CHANGED 3816 session gt supported events 61 3817 1 lt lt AV
  • 为何每次用完 ThreadLocal 都要调用 remove()?——内存泄漏

    什么是内存泄漏 内存泄漏指的是 xff0c 当某一个对象不再有用的时候 xff0c 占用的内存却不能被回收 xff0c 这就叫作内存泄漏 因为通常情况下 xff0c 如果一个对象不再有用 xff0c 那么我们的垃圾回收器 GC xff0c
  • CountDownLatch 是如何安排线程执行顺序的?

    CountDownLatch xff0c 它是 JDK 提供的并发流程控制的工具类 xff0c 它是在 java util concurrent 包下 xff0c 在 JDK1 5 以后加入的 比如我们去游乐园坐激流勇进 xff0c 有的时
  • 发生死锁必须满足哪 4 个条件?

    要想发生死锁有 4 个缺一不可的必要条件 第 1 个叫互斥条件 xff0c 它的意思是每个资源每次只能被一个线程 xff08 或进程 xff0c 下同 xff09 使用 xff0c 为什么资源不能同时被多个线程或进程使用呢 xff1f 这是
  • 红黑树和二叉树有什么区别?

    红黑树和二叉树有什么区别 xff1f 什么是二叉树 xff1f 什么是红黑树 xff1f 二叉树 xff08 Binary Tree xff09 是指每个节点最多只有两个分支的树结构 xff0c 即不存在分支大于 2 的节点 xff0c 二
  • 什么是TCC?

    假设现在有一个电商系统 xff0c 里面有一个支付订单的场景 xff0c 那对一个订单支付之后 xff0c 我们需要做下面的步骤 更改订单的状态为 已支付 扣减商品库存 给会员增加积分 创建销售出库单通知仓库发货 业务场景有了 xff0c
  • Java 泛型机制介绍

    Java泛型这个特性是从JDK 1 5才开始加入的 xff0c 因此为了兼容之前的版本 xff0c Java泛型的实现采取了 伪泛型 的策略 xff0c 即Java在语法上支持泛型 xff0c 但是在编译阶段会进行所谓的 类型擦除 xff0
  • 云计算服务三层架构-IaaS-PaaS-SaaS解析

    IaaS 基础设施即服务 Infrastructure as a service 通即虚拟的硬件资源 xff0c 如虚拟的主机 存储 网络 安全等资源 用户无需购买服务器 网络设备和存储设备 xff0c 只需要通过网络租赁即可搭建自己的应用
  • Spring事务的传播属性和隔离级别

    事务传播行为 如果在开始当前事务之前 xff0c 一个事务上下文已经存在 xff0c 此时有若干选项可以指定一个事务性方法的执行行为 64 Transactional propagation 61 Propagation REQUIRED
  • MySQL有多少种常用的日志,有什么作用

    redo 重做日志 作用 xff1a 确保事务的持久性 xff0c 防止在发生故障 xff0c 脏读未写回磁盘 重启数据库会进入 redo log 执行 重做 xff0c 到达事务一致性 undo 回滚日志 作用 xff1a 保证数据的原子
  • 自动控制算法的学习笔记

    1 PID调试步骤 没有一种控制算法比PID调节规律更有效 更方便的了 现在一些时髦点的调节器基本源自PID 甚至可以这样说 xff1a PID调节器是其它控制调节算法的基础 为什么PID应用如此广泛 又长久不衰 xff1f 因为PID解决
  • stm32 应用实例—— USART 串口通讯

    stm32 应用实例 USART 串口通讯 1 基于寄存器 固件库编程的差异性2 完成STM32的USART窗口通讯程序4 重温C语言程序里全局变量 局部变量 堆 栈等概念 xff0c 并验证3 归纳出stm32的堆 栈 全局变量的分配地址
  • windows BDA driver (abstract)

    AVStream is a Microsoft provided multimedia class driver that supports video only streaming and integrated audio video s
  • 详细解读Python豆瓣电影Top250网页爬取(主要对re的运用&excel保存数据)//包括对库的简介

    python里面有很多操作都类似于c语言 xff0c 这里在爬取时主要需要注意用到的是for循环语句和各种库 个人认为python中主要还是对库的运用比较占大比例 xff08 这里的软件版本是PyCharm 2020 3 2 x64 xff
  • Unity3D 委托和事件的优点(一)

    上周接触到了委托 这周终于在自己的项目中用到了 现在准备用委托和事件的方案 替换掉之前的一些使用不足的解决方案 在此感谢前辈们的优秀文章 我是根据在网上阅读的文章 通过自己的见解 并在自己的项目中进行实践 得出了一些结论与大家分享 我认为这