【2023unity游戏制作-mango的冒险】-7.玩法实现

在这里插入图片描述


👨‍💻个人主页:@元宇宙-秩沅

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 秩沅 原创

👨‍💻 收录于专栏unity常用API
在这里插入图片描述


女神节专题篇


文章目录

    • 女神节专题篇
    • 🎶前言
    • 🎶(==A==)触发宝箱吃东西
    • 🎶(==火==)触发宝藏逻辑实现
    • 🎶(==土==)宝箱特效逻辑实现
    • 🎶(==木==)法球上下的移动效果
    • 🎶(==金==)炮管的旋转和发射
    • 🎶(==电==)人物的移动和法球的生成
    • 🎶(==水==)运动状态的跟随移动
    • 🎶(==霾==)人物的移动
    • ⭐相关文章⭐


🎶前言


🅰️ 让CSDN的浪漫弥漫女神节💕


🎶(A触发宝箱吃东西


在这里插入图片描述

请添加图片描述


🎶(触发宝藏逻辑实现


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//----------------------
//--作用: 宝箱触发宝藏
//----------------------
public class showApple : MonoBehaviour
{public Animator Colltor;private GameObject apple;void Start(){Colltor = GetComponent<Animator>();}void Update(){}private void OnTriggerEnter2D(Collider2D collision) //设置触发器{if(collision.transform .tag =="Palyer"){Colltor.SetBool("swtch", true);Invoke("CreatApple", 0.1f); //延时生成}}private void CreatApple(){//实例化Appleapple = Resources.Load<GameObject>(@"prefab1/apple");Instantiate<GameObject>(apple, new Vector3(-5.59f, -1.36f, 0), Quaternion.identity);}
}

🎶(宝箱特效逻辑实现


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//----------------------
//--作用: 宝箱特效
//----------------------
public class destory : MonoBehaviour
{public SpriteRenderer SRender;private bool Switch1;private float i = 20;private void Start(){SRender = GetComponent<SpriteRenderer>();  }void Update(){if(Switch1 == true ) //进行恶魔果实的特效变换{Apple();}}private void OnTriggerEnter2D(Collider2D collision){if(collision .name =="Mango"){print("触发了");Switch1 = true;BallMove B_switch = collision.GetComponent<BallMove>();   //脚本调用获得打开法球冲散开关B_switch.switchCrush = true;print("恶魔果实效果开启");}/*  }private void OnTriggerExit2D(Collider2D collision){if (collision.name == "Mango"){  Destroy(gameObject);}  */}private  void Apple(){SRender.sprite = Resources.Load<Sprite>(@"prefab1/wow1"); //特效替换SRender.sortingOrder = 1;SRender.transform.localScale += new Vector3(1, 1, 0) * Time.deltaTime;i = i - 0.1f;SRender.color = new Color(255 ,0, 0,i)*Time.deltaTime;if (i == 0) //当透明度alpha为0时销毁{Destroy(gameObject);}}
}

🎶(法球上下的移动效果


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//----------------------
//--作用:法球的上下效果晃动
//----------------------
public class BallShape : MonoBehaviour
{private float UpDown;//申明上下变化的数值private float YPell;private float endTime = 2;private Vector2 Ball;void Start(){YPell = transform.position.y; //将mango辅助点的位置作为初始值并固定}void FixedUpdate(){//运用了倒计时的作用endTime = Mathf.MoveTowards(endTime, 0, 0.1f);if (endTime == 0){BallJump();endTime = 2;}}private void BallJump(){UpDown = Random.Range(-1, 1f) * 5;Ball = new Vector2(transform.position.x, YPell +UpDown );transform.position = Vector2.Lerp(transform.position, Ball, 0.05f);}
}

🎶(炮管的旋转和发射


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//----------------------
//--作用: 炮管旋转和发射
//----------------------
public class ShootRotation : MonoBehaviour
{private float Angle;private bool swtich;  //step1:设置使用开关(Bool)void Start(){}void Update(){if(swtich  == true  ){Angle = Input.mouseScrollDelta.y*5;transform.localRotation = new Quaternion(0, 0, Angle, 0);}}//step2:设置触发检测private void OnTriggerEnter2D(Collider2D collision){if(collision.transform.tag =="Player"){swtich = true;}}
}

🎶(人物的移动和法球的生成


using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.PlayerLoop;
using UnityEngine.UIElements;
//----------------------
//--作用:mango的移动和法球的生成
//----------------------
public class Movetowords : MonoBehaviour
{private GameObject point, profab;private Animator mangoAni;private Transform[] Allpoint = new Transform[8];private GameObject[] AllIea = new GameObject[4];private float time = 5;void Start(){point = GameObject.Find("add");profab = Resources.Load<GameObject>(@"prefab1/iea");mangoAni = GetComponent<Animator>();for (int i = 0; i < Allpoint .Length ; i++){Allpoint[i] = GameObject.Find("Allpoint").transform.GetChild(i);}Invoke("Creatball", 5);}private void Update(){//当位置到达后,动画转为吟唱动画if (gameObject.transform.position.x == point.transform.position.x){mangoAni.CrossFade("LookUp", 0f); //}}void FixedUpdate(){time = Mathf.MoveTowards(time, 0, 0.1f);//倒计时,相当于起到一个延时调用的作用if (time == 0){gameObject.transform.position = Vector2.MoveTowards(gameObject.transform.position, point.transform.position, 0.1f);}}private void Creatball()  //创建法球{for (int i = 0; i < AllIea.Length ; i++){//1.法球生成AllIea[i] = Instantiate<GameObject>(profab, Allpoint[i].position, Quaternion.identity);if (i == 3) //3.法球渲染层级设置{AllIea[i].GetComponent<SpriteRenderer>().sortingOrder = 3;}//2.实现法球移动效果IeaMove mation = AllIea[i].GetComponent<IeaMove>();//给实例化的物体添加上了脚本IeaMovemation.Pball  = Allpoint[i + 4] ; }}}

🎶(运动状态的跟随移动


using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.PlayerLoop;
using UnityEngine.Rendering;
//-----------------------
//--作用:运动状态法球的跟随移动(以及Crush情况)
//-----------------------public class BallMove : MonoBehaviour
{// Start is called before the first frame updateprivate GameObject fab1,fab2;                        //首先声明两个不同层级的法球预制体public Transform  [] emptyP =  new Transform[5];   //为储存四个辅助点的位置private GameObject [] Fball  = new GameObject[5];   //为生成四个实例化法球做载体private IeaMove[] BALL = new IeaMove[5] ;public Transform stopBall;   //声明恶魔效果散落位置的母体public bool switchCrush = false;void Start(){//使用资源加载的APIfab1 = Resources.Load<GameObject>(@"prefab1/iea1");fab2 = Resources.Load<GameObject>(@"prefab1/iea2");for (int i = 1; i < emptyP.Length; i++){emptyP[i] = transform.GetChild(i); }creatMove();}private void Update(){if (switchCrush == true ){print("碰到恶魔果实!");CrushBall();}}private void creatMove(){for (int i = 1; i < emptyP.Length; i++){//使用判断语句的目的就是分两部分实例化法球,高层及和低层级if (i < 3){Fball[i] = Instantiate<GameObject>(fab1, emptyP[i].position, Quaternion.identity);}else if(i>=3){Fball[i] = Instantiate<GameObject>(fab2, emptyP[i].position, Quaternion.identity);}BALL[i] = Fball[i].AddComponent<IeaMove>(); //给物体添加脚本BALL[i].Pball = emptyP[i];}}private  void CrushBall() // 更新法球停留的辅助点位置{for(int i = 1; i<BALL.Length; i++ ){//四散的效果         Fball[i].  transform.Translate(Fball[i].transform .position .x , -2, 0);BALL[i].Pball = stopBall.GetChild(i-1);BALL[i].speed = 0.1f;print("法球失散!");BALL[i].swtich = true;BALL[i].M_sprite = Resources.Load<Sprite>(@"prefab1/wow"+(i+1));}switchCrush = false;}}

🎶(人物的移动


using System.Collections;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
using UnityEditor.Rendering;
using UnityEngine;//-----------------------
//--作用:mango的移动
//-----------------------
public class mangoMove : MonoBehaviour
{// Start is called before the first frame updateprivate float x;private float y;private Rigidbody2D Rmango;private Vector2 mangoMovex,mangoMovey;private float SpeedVauel = 5;public  float JumpSpeed = 5000;private  Animator MGanimator;private bool isGrounp,Switch1;private GameObject bow;void Start(){Rmango = GetComponent<Rigidbody2D>();MGanimator = GetComponent<Animator>();}private void Update(){x = Input.GetAxis("Horizontal"); // 按AD键获取类型为Float的数值作为系数范围为【-1,1】      AmationJump();}void FixedUpdate(){Move();closeShoot();}private void Move() //Mango的移动{//实现转向if (x > 0)       //当按下A的时候 x是负数 ,按下D的时候x是正数{transform.localScale = new Vector3(0.75f, 0.75f, 1);}else if (x < 0){transform.localScale = new Vector3(-0.75f, 0.75f, 1);}//通过刚体组件实现物体的移动,我们只需要将刚体速度的大小和方向进行赋值即可//mangoMovex 和 mangoMoveY 都是vector2 类型的变量mangoMovex = Vector2.right * x * SpeedVauel;       //x轴的速度mangoMovey = new Vector2(0, Rmango.velocity.y);    //y轴的速度//速度向量的合成,有大小并且有方向的Rmango.velocity = mangoMovex + mangoMovey;MGanimator.SetFloat("Run", Mathf.Abs(Rmango .velocity .x));}private void AmationJump() //跳跃动画切换功能{//当按下空格键和 符合 在地面的条件时 if (Input.GetKeyDown(KeyCode.Space) && isGrounp == true ){Rmango.AddForce (Vector2 .up *JumpSpeed);}}private void closeShoot() //法炮发射功能{if (Input.GetKeyDown(KeyCode.K)){MGanimator.CrossFade("Attack", 0.2f);bow = Instantiate(Resources.Load<GameObject>(@"prefab1/bow"), transform.GetChild(6).position, Quaternion.identity);Rigidbody2D dd = new Rigidbody2D();dd = bow.AddComponent<Rigidbody2D>();dd.AddForce(new Vector2(transform.localScale.x * 5000, transform.position.y));MGanimator.SetBool("Attack", false);             }     }private void  damage(bool swtich) //Mango受伤动画的切换{print("来切换动画了");if(swtich == true){MGanimator.SetBool("hurt", true);}else{MGanimator.SetBool("hurt", false);}}//碰撞器方法private void OnCollisionStay2D(Collision2D collision){//接触的物体标签为Grounp的时候if (collision.contactCount == 1&& collision.transform.tag == "grounp" ){isGrounp = collision.gameObject.CompareTag("grounp");MGanimator.SetFloat("Jump", 0);}if (collision.transform.tag == "damage"){damage(true);print("注意,正在接触陷阱");}}private void OnCollisionExit2D(Collision2D collision) //也可以说是跳跃状态的时候{if (collision.transform.tag == "grounp" && collision.contactCount == 0){MGanimator.SetFloat("Jump", 3);}isGrounp = false;if (collision.transform.tag == "damage"){damage(false);print("退出了");}}}

⭐相关文章⭐

⭐【2023unity游戏制作-mango的冒险】-4.场景二的镜头和法球特效跟随

⭐【2023unity游戏制作-mango的冒险】-3.基础动作和动画API实现

⭐【2023unity游戏制作-mango的冒险】-2.始画面API制作

⭐【2023unity游戏制作-mango的冒险】-1.场景搭建

⭐“狂飙”游戏制作—游戏分类图鉴(网易游学)

⭐本站最全-unity常用API大全(万字详解),不信你不收藏



你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!
请添加图片描述
using System;
using System.Collections;
using System.Configuration;
using MySql.Data;
using MySql.Data.MySqlClient;
using System.Data;

///
///MYSQLHelper 的摘要说明
///
public abstract class MySqlHelper
{
//数据库连接字符串
public static string Conn = “Database=‘roomrentsystem’;Data Source=‘localhost’;User Id=‘root’;Password=‘123456’;charset=‘utf8’;pooling=true”;

// 用于缓存参数的HASH表
private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());/// <summary>
///  给定连接的数据库用假设参数执行一个sql命令(不返回数据集)
/// </summary>
/// <param name="connectionString">一个有效的连接字符串</param>
/// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>
/// <param name="cmdText">存储过程名称或者sql命令语句</param>
/// <param name="commandParameters">执行命令所用参数的集合</param>
/// <returns>执行命令所影响的行数</returns>
public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
{MySqlCommand cmd = new MySqlCommand();using (MySqlConnection conn = new MySqlConnection(connectionString)){PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);int val = cmd.ExecuteNonQuery();cmd.Parameters.Clear();return val;}
}/// <summary>
/// 用现有的数据库连接执行一个sql命令(不返回数据集)
/// </summary>
/// <param name="connection">一个现有的数据库连接</param>
/// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>
/// <param name="cmdText">存储过程名称或者sql命令语句</param>
/// <param name="commandParameters">执行命令所用参数的集合</param>
/// <returns>执行命令所影响的行数</returns>
public static int ExecuteNonQuery(MySqlConnection connection, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
{MySqlCommand cmd = new MySqlCommand();PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);int val = cmd.ExecuteNonQuery();cmd.Parameters.Clear();return val;
}/// <summary>
///使用现有的SQL事务执行一个sql命令(不返回数据集)
/// </summary>
/// <remarks>
///举例:
///  int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new MySqlParameter("@prodid", 24));
/// </remarks>
/// <param name="trans">一个现有的事务</param>
/// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>
/// <param name="cmdText">存储过程名称或者sql命令语句</param>
/// <param name="commandParameters">执行命令所用参数的集合</param>
/// <returns>执行命令所影响的行数</returns>
public static int ExecuteNonQuery(MySqlTransaction trans, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
{MySqlCommand cmd = new MySqlCommand();PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);int val = cmd.ExecuteNonQuery();cmd.Parameters.Clear();return val;
}/// <summary>
/// 用执行的数据库连接执行一个返回数据集的sql命令
/// </summary>
/// <remarks>
/// 举例:
///  MySqlDataReader r = ExecuteReader(connString, CommandType.StoredProcedure, "PublishOrders", new MySqlParameter("@prodid", 24));
/// </remarks>
/// <param name="connectionString">一个有效的连接字符串</param>
/// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>
/// <param name="cmdText">存储过程名称或者sql命令语句</param>
/// <param name="commandParameters">执行命令所用参数的集合</param>
/// <returns>包含结果的读取器</returns>
public static MySqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
{//创建一个MySqlCommand对象MySqlCommand cmd = new MySqlCommand();//创建一个MySqlConnection对象MySqlConnection conn = new MySqlConnection(connectionString);//在这里我们用一个try/catch结构执行sql文本命令/存储过程,因为如果这个方法产生一个异常我们要关闭连接,因为没有读取器存在,//因此commandBehaviour.CloseConnection 就不会执行try{//调用 PrepareCommand 方法,对 MySqlCommand 对象设置参数PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);//调用 MySqlCommand  的 ExecuteReader 方法MySqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);//清除参数cmd.Parameters.Clear();return reader;}catch{//关闭连接,抛出异常conn.Close();throw;}
}/// <summary>
/// 返回DataSet
/// </summary>
/// <param name="connectionString">一个有效的连接字符串</param>
/// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>
/// <param name="cmdText">存储过程名称或者sql命令语句</param>
/// <param name="commandParameters">执行命令所用参数的集合</param>
/// <returns></returns>
public static DataSet GetDataSet(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
{//创建一个MySqlCommand对象MySqlCommand cmd = new MySqlCommand();//创建一个MySqlConnection对象MySqlConnection conn = new MySqlConnection(connectionString);//在这里我们用一个try/catch结构执行sql文本命令/存储过程,因为如果这个方法产生一个异常我们要关闭连接,因为没有读取器存在,try{//调用 PrepareCommand 方法,对 MySqlCommand 对象设置参数PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);//调用 MySqlCommand  的 ExecuteReader 方法MySqlDataAdapter adapter = new MySqlDataAdapter();adapter.SelectCommand = cmd;DataSet ds = new DataSet();adapter.Fill(ds);//清除参数cmd.Parameters.Clear();conn.Close();return ds;}catch (Exception e){throw e;}
}/// <summary>
/// 用指定的数据库连接字符串执行一个命令并返回一个数据集的第一列
/// </summary>
/// <remarks>
///例如:
///  Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new MySqlParameter("@prodid", 24));
/// </remarks>
///<param name="connectionString">一个有效的连接字符串</param>
/// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>
/// <param name="cmdText">存储过程名称或者sql命令语句</param>
/// <param name="commandParameters">执行命令所用参数的集合</param>
/// <returns>用 Convert.To{Type}把类型转换为想要的 </returns>
public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
{MySqlCommand cmd = new MySqlCommand();using (MySqlConnection connection = new MySqlConnection(connectionString)){PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);object val = cmd.ExecuteScalar();cmd.Parameters.Clear();return val;}
}/// <summary>
/// 用指定的数据库连接执行一个命令并返回一个数据集的第一列
/// </summary>
/// <remarks>
/// 例如:
///  Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new MySqlParameter("@prodid", 24));
/// </remarks>
/// <param name="connection">一个存在的数据库连接</param>
/// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>
/// <param name="cmdText">存储过程名称或者sql命令语句</param>
/// <param name="commandParameters">执行命令所用参数的集合</param>
/// <returns>用 Convert.To{Type}把类型转换为想要的 </returns>
public static object ExecuteScalar(MySqlConnection connection, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)
{MySqlCommand cmd = new MySqlCommand();PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);object val = cmd.ExecuteScalar();cmd.Parameters.Clear();return val;
}/// <summary>
/// 将参数集合添加到缓存
/// </summary>
/// <param name="cacheKey">添加到缓存的变量</param>
/// <param name="commandParameters">一个将要添加到缓存的sql参数集合</param>
public static void CacheParameters(string cacheKey, params MySqlParameter[] commandParameters)
{parmCache[cacheKey] = commandParameters;
}/// <summary>
/// 找回缓存参数集合
/// </summary>
/// <param name="cacheKey">用于找回参数的关键字</param>
/// <returns>缓存的参数集合</returns>
public static MySqlParameter[] GetCachedParameters(string cacheKey)
{MySqlParameter[] cachedParms = (MySqlParameter[])parmCache[cacheKey];if (cachedParms == null)return null;MySqlParameter[] clonedParms = new MySqlParameter[cachedParms.Length];for (int i = 0, j = cachedParms.Length; i < j; i++)clonedParms[i] = (MySqlParameter)((ICloneable)cachedParms[i]).Clone();return clonedParms;
}/// <summary>
/// 准备执行一个命令
/// </summary>
/// <param name="cmd">sql命令</param>
/// <param name="conn">OleDb连接</param>
/// <param name="trans">OleDb事务</param>
/// <param name="cmdType">命令类型例如 存储过程或者文本</param>
/// <param name="cmdText">命令文本,例如:Select * from Products</param>
/// <param name="cmdParms">执行命令的参数</param>
private static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, CommandType cmdType, string cmdText, MySqlParameter[] cmdParms)
{if (conn.State != ConnectionState.Open)conn.Open();cmd.Connection = conn;cmd.CommandText = cmdText;if (trans != null)cmd.Transaction = trans;cmd.CommandType = cmdType;if (cmdParms != null){foreach (MySqlParameter parm in cmdParms)cmd.Parameters.Add(parm);}
}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/5877.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文与专利查找和下载

例如我想查找和下载视频理解(video understanding)相关论文 路线大纲如下&#xff1a; 一、最主要方式&#xff1a; 大纲&#xff0c;蓝色都是有超级链接的可以直接打开: 第一步 谷歌搜索(英文) 学校的知网(中文)第二步 下载论文(谷歌学术--英文 学校的知网--中文)下载不了…

对话人工智能 |新时代AI如何“落地“

前言&#xff1a; Comate代码助手推出&#xff0c;现场生成了贪吃蛇游戏&#xff0c;我们距离AI自动编程还有多远&#xff1f; 文章目录 序章正文背景基础坚实文心大模型飞浆深度学习框架 Comate的出现优质的智能助理和伙伴多场景适用优势特征Demo演示视频&#xff1a; 总结 序…

Anacoda3中成功配置Tesseract-OCR超详细教程!!(win7、win10)

Anacoda3中成功配置Tesseract-OCR Tesseract-OCR简介安装及配置环境步骤1、在Anaconda虚拟环境中安装pytesseract第三方库2、下载tesseract-ocr安装包并安装3、环境配置检验是否安装成功修改pytesseract.py文件&#xff08;很重要&#xff01;&#xff09; Tesseract-OCR简介 …

H5学习(二)-- 常用标签

标签内容 一、标题标签二、表单标签啊三、段落标签四、插入图片标签五、换行标签六、列表标签七、超链接标签八、容器标签九、结构性标签十、级块性标签十一、行内语义性标签 HTML中的常用的标签 一、标题标签 <body><!--标题标签--><h1>h1标签</h1>&…

使用matplotlib制作动态图

使用matplotlib制作动态图 一、简介二、模块简介1. **FuncAnimation**类介绍2. 定义动画更新函数 三、使用matplotlib制作动画1.一步法制作动态图片2. 两步法制作动态图片 一、简介 matplotlib(https://matplotlib.org/)是一个著名的python绘图库&#xff0c;由于其灵活强大的…

NOSQL——redis的安装,配置与简单操作

目录 一、缓存的相关知识 1&#xff09;缓存的概念 2&#xff09;系统缓存 buffer与cache&#xff1a; 3&#xff09;缓存保存位置及分层结构 DNS缓存 应用层缓存 数据层缓存 分布式缓存服务&#xff1a; 数据库&#xff1a; 硬件缓存 二、关系型数据与非关系型数据…

day1-若依项目前后端分离的初步使用

响应式布局: 做好的产品能在pc端,手机,平板都能正常浏览 开发项目两种方式 1.自己从0开始写代码 2.在若依中下载拥有基础功能的源码 若依使用的mysql版本 mysql5.7 导入别人的项目如何操作 若依项目下载地址**:https://gitee.com/y_project/RuoYi-Vue.git** 可以使用揉…

【elementplus】body设置zoom后,el-table开启show-overflow-tooltip后,表格的tooltip显示会错位的解决方案

由于我的项目是无法避免使用zoom&#xff0c;所以只记录zoom后的解决方案 示例&#xff1a;明明划过的是第一行&#xff0c;tooltip却显示到了第四行的位置&#xff1b; 正确显示&#xff1a;划过第一行&#xff0c;tooltip显示在第一行的位置 代码&#xff1a;使用transfor…

Linux--用户身份切换: su

①普通用户切换成超级用户且更改路径&#xff1a;su - ②普通用户切换成超级用户且不更改路径&#xff1a;su root 或者 su ③(由普通用户切换来的)超级用户切换回普通用户&#xff1a;Ctrld ④超级用户切换成普通用户&#xff1a;su 普通用户名 ⑤普通用户a切换成普通用户b…

Java框架学习(二)SSM体系:Spring、SpringMVC、MybatisPlus

文章目录 SpringIoC控制反转DI 依赖注入BeanBean基础配置namescope Bean实例化方式Bean的生命周期 依赖注入方式依赖自动装配 Mybatis-Plus配置BaseMapper通用Service常用注解TableNameTableId雪花算法 TableFieldTableLogic 条件构造器和常用接口QueryWrapperUpdateWrapper 插…

第五节 利用Ogre 2.3实现雨,雪,爆炸,飞机喷气尾焰等粒子效果

本节主要学习如何使用Ogre2.3加载粒子效果。为了学习方便&#xff0c;直接将官方粒子模块Sample_ParticleFX单独拿出来编译&#xff0c;学习如何实现粒子效果。 一. 前提须知 如果参考官方示例建议用最新版的Ogre 2.3.1。否则找不到有粒子效果的示例。不要用官网Ogre2.3 scri…

《项目实战》 Jenkins 与 CICD、发布脚本

文章目录 在这里插入图片描述 前言1、CI/CD是什么&#xff1f;1.1、CI1.2、CD 2、jenkins的下载与安装2.1、下载2.2、安装 3、创建Java Springboot项目3.1、创建项目shell3.2、配置Maven3.3、查看项目shell结构3.4、在启动类增加日志3.4.1、创建ShellController&#xff0c;方便…