记录:Unity脚本的编写10.0

目录

  • 前言
  • 实验1: 仿真系统的UI主界面设计
    • 1.实验目的
    • 2.实验内容
    • 3.实验步骤
  • 实验2:仿真系统功能实现
    • 1.实验目的
    • 2.实验内容
    • 3.实验步骤

前言

之前内容的集大成者,一个游戏小demo,虽然很简陋但是还是有一些东西的

实验1: 仿真系统的UI主界面设计

1.实验目的

(1)熟悉Unity中UI界面的设计与编写;
(2)熟悉UI界面中场景转换,UI与场景内容相互关联的方式。
(3)熟悉Unity中MySQL数据库的操作

2.实验内容

新建一个Unity场景,在此场景中实现如下功能:
(1)自行设计一个登录、注册UI界面;
(2)添加数据库的动态链接库文件,提前设计数据库表格(自行设计);
(3)连接数据库,实现增、删、改、查等数据库对用户的操作;
(4)UI界面中包括canvas、Image、RawImage、Button等多种UI元素;
(5)实现点击Play按钮转换场景,点击Exit退出游戏的功能;
(6)实现主界面添加音量滑动杆、静音等功能,添加背景音乐和音效音乐;
(7)为UI界面单独设置一个场景,并设置编号为0。

3.实验步骤

1.自行设计一个登录、注册UI界面
在这里插入图片描述

一个设计好的UI界面,包含背景图片,登录注册,文本输入等功能,这好像没啥好说的
2.添加数据库的动态连接库文件,提前设计数据库表格(自行设计)
首先添加文件
在这里插入图片描述
在这里插入图片描述

添加这些关于数据库连接的文件之后,设计数据库的表格
在这里插入图片描述

设计好的表格如上,虽然很简陋,但是够用,至于为什么叫qquser(难道我会说我是直接用的以前用过的数据库,懒得创建新的吗)
3.连接数据库,实现增删改查等数据库对用户的操作

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using MySql.Data.MySqlClient;//MySql连接器命名空间
using System;

public class mysql : MonoBehaviour
{
    //创建数据库
    //服务器名称,端口号,数据库,用户名,密码,数据格式,连接形式

    // Start is called before the first frame update
    string strConn = "server =localhost;port=3306;database=qqdb;user=root;password=12345678;Charset=utf8";

    //创建Mysql连接器
    MySqlConnection sqlConnection;
    void Start()
    {
        //操作数据库的第一步
        sqlConnection = new MySqlConnection(strConn);
        try
        {
            sqlConnection.Open();
            Debug.Log(sqlConnection.State);

            //1.增 insert
            //InsterData();
            //2.删 delet
            //DeletData();
            //3.改 update
            //UpdateData();
            //4.查 select
            SelectData();
        }
        catch(System.Exception) {
            throw;
        }
        finally{
            if(sqlConnection.State.ToString()=="open")
//操作数据库的最后一步
        
        sqlConnection.Close();
        Debug.Log(sqlConnection.State);
        }
        }

    private void SelectData()
    {
        //写sql语句
        string strSql = "select * from qquser where QQUserId= 5;";
        //使用MySqlCommand发送语句
        using(MySqlCommand mySqlCommand = new MySqlCommand(strSql, sqlConnection))
        {
             //执行ExecuteReader方法
             using(MySqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader())
            {
                //通过MySqlDataReader读取数据
                while (mySqlDataReader.Read()){
                    //使用GetXXX获取不同类型的数据
                    Debug.Log(mySqlDataReader.GetString(0));
                    Debug.Log(mySqlDataReader.GetString(1));
                    //Debug.Log(mySqlDataReader.GetString(2));
                }
            }
        }
        

       
        //throw new NotImplementedException();
    }

    private void UpdateData()
    {
        throw new NotImplementedException();
    }

    private int DeletData()
    {
        string strSql = "delete from qquser where QQUserId=7;";
        using (MySqlCommand mySqlCommand = new MySqlCommand(strSql, sqlConnection))
        {
            //执行ExecuteNonQuery方法
            return mySqlCommand.ExecuteNonQuery();
            throw new NotImplementedException();
        }
    }

    private void InsterData()
    {
        //写sql语句
        //string strSql = "insert into student(name,age) values('虚竹',25);";
        string strSql = "insert into qquser(QQUserId,QQPassword) values(7,321);";
        //使用MySqlCommand发送语句
        using (MySqlCommand mySqlCommand = new MySqlCommand(strSql, sqlConnection))
        {
//执行ExecuteNonQuery方法
        mySqlCommand.ExecuteNonQuery();
        throw new NotImplementedException();
        }
        
    }


    // Update is called once per frame
    void Update()
    {
       
    }
}

以上是关于数据库连接及增删改查的代码,下面是表现
增加成功后
在这里插入图片描述

删除成功后
在这里插入图片描述

查询成功
在这里插入图片描述

  1. UI界面中包括canvas、Image、RawImage、Button等多种UI元素
    在这里插入图片描述

如图所示,ui界面中包含有包括canvas,image,rawimage,button在内的多种组件
5. 实现点击Play按钮转换场景,点击Exit退出游戏的功能
首先run一下项目
在这里插入图片描述

输入用户名密码
在这里插入图片描述

点击登录并play按钮
在这里插入图片描述

发现切换到了另一个场景中,点击exit

发现退出了play模式
6. 实现主界面添加音量滑动杆、静音等功能,添加背景音乐和音效音乐
在这里插入图片描述

偷偷修改了一下布局
在主页面就可以发现有一个滑动杆和一个toggle,这就是控制音量和可以静音的按钮
添加音乐的组件和音乐来进行控制
在这里插入图片描述
在这里插入图片描述

  1. 为UI界面单独设置一个场景,并设置编号为0
    在这里插入图片描述

设置完毕
完整代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using MySql.Data.MySqlClient;
using UnityEngine.UI;
using TMPro;
using System;
using Unity.VisualScripting;
using UnityEngine.UIElements;
using UnityEngine.SceneManagement;

public class Login1 : MonoBehaviour
{
    //创建GUI
    public TMP_InputField inputField1;
    public TMP_InputField inputField2;
    public UnityEngine.UI.Button button1;
    public UnityEngine.UI.Button button2;
    public UnityEngine.UI.Button button3;
    public UnityEngine.UI.Button button4;
    public Text tip;
    //创建数据库
    //服务器名称,端口号,数据库,用户名,密码,连接形式

    string strConn = "server =localhost;port=3306;database=qqdb;user=root;password=12345678;Charset=utf8";

    //创建Mysql连接器
    MySqlConnection sqlConnection;

    string username;
    string password;
    string usernameDB;
    string passwordDB;
    // Start is called before the first frame update
    void Start()
    {
        button1.onClick.AddListener(login);
        button2.onClick.AddListener(register);
        button3.onClick.AddListener(exit);
        button4.onClick.AddListener(delet);
    }

    private void delet()
    {
        username = inputField1.text;
        password = inputField2.text;
        //1.连接并打开数据库
        ConnectDB();
        //2.查找用户名和密码
        SelectDB(username);
        //3.删除用户名和密码
        DeletDB(username, password);
        //4.关闭数据库
        Close();
    }

    

    private void exit()
    {
        //判断是否在编辑器模式下运行
        #if UNITY_EDITOR
        //如果是,就停止播放
        UnityEditor.EditorApplication.isPlaying = false;
        #else
        //如果不是,就退出应用
        Application.Quit();
        #endif
    }

    public void login()
    {
        username = inputField1.text;
        password = inputField2.text;
        //1.连接并打开数据库
         ConnectDB();
        //2.查找用户名和密码
        SelectDB(username);
        //3.关闭数据库
        Close();
        //4.对比用户名和密码
       CompareDB();
    }
    public void register()
    {
        username = inputField1.text;
        password = inputField2.text;
        //1.连接并打开数据库
        ConnectDB();
        //2.查找用户名和密码
        SelectDB(username);
        //3.添加用户名和密码
        InsertDB(username,password);
        //4.关闭数据库
        Close ();
    }

    private int InsertDB(string n,string p)
    {
        //写sql语句
        string strSql = "insert into qquser(QQUserId,QQPassword) values('" + n +"','" + p + "');";
        //使用MySqlCommand发送语句
        using (MySqlCommand mySqlCommand = new MySqlCommand(strSql, sqlConnection))
        {
            //执行ExecuteNonQuery方法
            return mySqlCommand.ExecuteNonQuery();
        }
    }
    private int DeletDB(string n, string p)
    {
        //写出sql语句
        string strSql = "delete from qquser where QQUserId= '" + n + "';";
        using (MySqlCommand mySqlCommand = new MySqlCommand(strSql, sqlConnection))
        {
            //执行ExecuteNonQuery方法
            return mySqlCommand.ExecuteNonQuery();
            throw new NotImplementedException();
        }
    }

    private void ConnectDB()
    {
        sqlConnection = new MySqlConnection(strConn);
        try
        {           
            sqlConnection.Open();
            Debug.Log(sqlConnection.State);
        }catch (Exception)
        {
            
        }
    }

    private void Close()
    {
        if (sqlConnection.State.ToString() == "open")
        {
            //操作数据库的最后一步
            sqlConnection.Close();
        }
    }

    private void SelectDB(string n)
    {
        //写sql语句
        string strSql = "select * from qquser where QQUserId= '" + n + "';";
        //使用MySqlCommand发送语句
        using (MySqlCommand mySqlCommand = new MySqlCommand(strSql, sqlConnection))
        {
            //执行ExecuteReader方法
            using (MySqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader())
            {
                //通过MySqlDataReader读取数据
                while (mySqlDataReader.Read())
                {
                    usernameDB= mySqlDataReader.GetString(0);
                    passwordDB= mySqlDataReader.GetString(1);
                }
            }
        }
    }

    private void CompareDB()
    {
        if(username == usernameDB && password == passwordDB)
        {
            SceneManager.LoadScene(1);
            //方法的重载

            //tip.text= "登录成功";
        }
        else
        {
            tip.text = "登录失败";
        }
    }
}

实验2:仿真系统功能实现

1.实验目的

(1)熟悉在Unity中设置仿真场景;
(2)熟悉在Unity中C#语言的使用;
(3)熟悉仿真功能的实现。

2.实验内容

新建一个仿真场景,完成下列功能:
(1)使用Unity的基本建模功能设置一些三维场景(自行发挥想象,进行建模设计)
(2)实现漫游功能,可以在场景中键盘控制前后左右移动,鼠标控制旋转,完成基本的场景漫游功能。(自行设计)
(3)使用射线,实现获取鼠标的点击功能。(自行设计)
(4)制作内部动画,配合鼠标点击,实现播放动画。(自行设计)
(5)设置触发器,当漫游相机进到入触发器中时,执行动画的播放。(自行设计)
(6)添加背景音乐和鼠标点击的音效(自行设计)
(7)添加UI按钮设计,要求可以返回主控界面。(自行设计)
(8)打包,生成可执行文件,要求可执行文件脱离Unity环境后,能够自行运行。

3.实验步骤

1.使用Unity的基本建模功能设置一些三维场景(自行发挥想象,进行建模设计)
进行一些三维场景的建设
在这里插入图片描述

  1. 实现漫游功能,可以在场景中键盘控制前后左右移动,鼠标控制旋转,完成基本的场景漫游功能。(自行设计)
    在这里插入图片描述
    在这里插入图片描述

实现了上述的漫游功能
代码:

protected void Move()
{
    float x = Input.GetAxis("Horizontal");
    float z = Input.GetAxis("Vertical");
    float y = Input.GetAxis("Jump");
transform.Translate(new Vector3(x, y, z) * floSpeed * Time.deltaTime);
}
  1. 使用射线,实现获取鼠标的点击功能。(自行设计)
    通过脚本控制射线,使得鼠标点击的时候实现功能
    在这里插入图片描述

如图,可以对点击的方向发射小球
代码:

private void learnRay()
{
    if (Input.GetMouseButtonDown(0))
    {
        //创建一道射线
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        //检测射线
        if (Physics.Raycast(ray,out RaycastHit hitInfo))
        {
            //hitInfo.transform.Translate(transform.up * 10);
            //Debug.Log(hitInfo.transform.name);
            //rb.AddForce(transform.up * 500);
            //Debug.Log(hitInfo.transform.name);
            //Debug.Log(hitInfo.point);
            //hitInfo.point;   //射线撞击点

            GameObject shell = Instantiate(Sphere,transform.position+transform.right*offset,transform.rotation);
            shell.GetComponent<Rigidbody>().velocity = Vector3.Normalize(hitInfo.point - transform.position) * 20;
            // 计算小球的动量
            //Vector3 ballMomentum = shell.GetComponent<Rigidbody>().velocity * shell.GetComponent<Rigidbody>().mass;
            // 给物体施加一个与小球相反方向的同等大小的力,抵消小球的反作用力
            //rb.AddForce(-ballMomentum, ForceMode.Impulse);
        }
            
    }
}
  1. 制作内部动画,配合鼠标点击,实现播放动画。(自行设计)
    在这里插入图片描述

如图,当在点击时,小人就会播放一段动画
代码:

public class triger : MonoBehaviour
{
    // 获取Animator组件
    private Animator animator;

    private void Start()
    {
        animator = GetComponent<Animator>();
    }

    private void Update()
    {
        // 如果鼠标左键点击
        if (Input.GetMouseButtonDown(0))
        {
            // 激活触发器"Play"
            //animator.SetTrigger("Play");
            // animator.Play("idle.pickup",0, 0f);
            animator.Play(Animator.StringToHash("pickup"));
        }
    }
}
  1. 设置触发器,当漫游相机进到入触发器中时,执行动画的播放。(自行设计)
    在这里插入图片描述

如图,在经过一个设置好的空物体时就会触发触发器,执行动画的播放
6. 添加背景音乐和鼠标点击的音效(自行设计)
在这里插入图片描述
在这里插入图片描述

在进入游戏以及鼠标点击的时候(也就是发射小球),都会出发不同的音乐和音效
代码控制:背景音乐

public class newscript : MonoBehaviour
{
    // Start is called before the first frame update
    AudioSource ads;
    AudioClip ac;
    List<AudioClip> acs = new List<AudioClip>();
    int j = 0;
    void Start()
    {
        #region source
        //ads = GetComponent<AudioSource>();
        //ads.Play();//播放
        // ads.Pause();//暂停
        // ads.UnPause();//继续播放
        // ads.PlayOneShot();//播放一次
        // ads.volume;//音量
        // ads.playOnAwake;//唤醒时播放
        // ads.mute;//静音
        //ads.loop;//循环
        // ads.isPlaying;//是否播放中
        // ads.clip;//声音片段 
        #endregion
        //加载音频设置
        ac = Resources.Load<AudioClip>("Assets/resource/AudioClip/1.mp3") as AudioClip;
        ads = GetComponent<AudioSource>();
        for(int i = 0;i < 3; i++){
            ac = Resources.Load<AudioClip>("Assets/resource/AudioClip/1.mp3") as AudioClip;
            acs.Add(ac);
        } 
    }

    // Update is called once per frame
    void Update()
    {
        
        changeVolume();
        playMusic();
        changeMusic();
    }

    private void changeMusic()
    {
        if (Input.GetKey(KeyCode.Tab))
        {
            ads.clip = acs[j];
            ads.Play();
            if (j < acs.Count - 1)
            {
                j++;
            }
            else
            {
                j = 0;
            }
        }
    }

    private void playMusic()
    {
        if (Input.GetKey(KeyCode.B))
        {
            if (ads.isPlaying)
            {
                ads.Pause();
            }
            else
            {
                ads.UnPause();
            }
        }
        
    }

    private void changeVolume()
    {
        if (Input.GetKey(KeyCode.M))
        {
            ads.volume += 0.5f;
        }
        if (Input.GetKey(KeyCode.N))
        {
            ads.volume -= 0.5f;
        }
        
    }
}
点击音效
protected void shoot()
{
    if (Input.GetMouseButtonDown(0))
    {
        ads.Play();
    }
}
  1. 添加UI按钮设计,要求可以返回主控界面。(自行设计)
    在这里插入图片描述
    在这里插入图片描述

在场景中点击esc就会弹出返回主控界面的按钮,点击按钮就会返回之前的页面
代码:

public class TransScene : MonoBehaviour
{
    // 按钮的引用
    public UnityEngine.UI.Button button1;

    // Canvas Group 组件的引用
    private CanvasGroup canvasGroup;

    // 按钮的当前状态,true 表示可见,false 表示不可见
    private bool visible;

    // Start is called before the first frame update
    void Start()
    {
        // 获取 Canvas Group 组件
        canvasGroup = button1.GetComponent<CanvasGroup>();

        // 初始时隐藏按钮
        HideButton();

        button1.onClick.AddListener(transScene);
    }

    // Update is called once per frame
    void Update()
    {
        // 检测用户是否按下 esc 键
        if (Input.GetKeyDown(KeyCode.Escape))
        {
            // 调用函数切换按钮状态
            ToggleButton();
        }
    }

    // 显示按钮的函数
    void ShowButton()
    {
        // 设置 Alpha 为 1
        canvasGroup.alpha = 1f;

        // 设置 Interactable 和 Blocks Raycasts 为 true
        canvasGroup.interactable = true;
        canvasGroup.blocksRaycasts = true;

        // 更新按钮状态
        visible = true;
    }

    // 隐藏按钮的函数
    void HideButton()
    {
        // 设置 Alpha 为 0
        canvasGroup.alpha = 0f;

        // 设置 Interactable 和 Blocks Raycasts 为 false
        canvasGroup.interactable = false;
        canvasGroup.blocksRaycasts = false;

        // 更新按钮状态
        visible = false;
    }

    // 切换按钮状态的函数
    void ToggleButton()
    {
        // 根据当前状态调用相应的函数
        if (visible)
        {
            HideButton();
        }
        else
        {
            ShowButton();
        }
    }

    private void transScene()
    {

                SceneManager.LoadScene("login");

        }
}
  1. 打包,生成可执行文件,要求可执行文件脱离Unity环境后,能够自行运行。
    在这里插入图片描述

使用unity自带的功能就可以打包生成出来了
在这里插入图片描述

经过尝试,可以脱离unity运行

以上。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙开发ServiceAbility基本概念

时间过长&#xff0c;开发者必须在Service里创建新的线程来处理&#xff08;详见线程间通信&#xff09;&#xff0c;防止造成主线程阻塞&#xff0c;应用程序无响应。 创建Service 介绍如何创建一个Service 创建Service的代码示例如下&#xff1a;查看获取鸿蒙开发 (qq.com)…

【运维面试100问】(八)如何手动释放内存

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…

单电源、轨到轨输入输出、高精度运放MS8551/8552/8554

产品简述 MS8551/8552/8554 是输入输出轨到轨的高精度运算放大器&#xff0c;它 有极低的输入失调电压和偏置电流&#xff0c;单电源电压范围为 1.8V 到 5V 。 轨到轨的输入输出范围使 MS8551/8552/8554 可以轻松地放大高 电平和低电平的传感信号。所有特性使得 MS8…

【Hive】——安装部署

1 MetaData&#xff08;元数据&#xff09; 2 MetaStore &#xff08;元数据服务&#xff09; 3 MetaStore配置方式 3.1 内嵌模式 3.2 本地模式 3.3 远程模式 4 安装前准备 <!-- 整合hive --><property><name>hadoop.proxyuser.root.hosts</name><v…

版本依赖冲突问题排查过程记录

问题 开发平台在集成minio时&#xff0c;pom引入了sdk。 <dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.5.7</version> </dependency>在调用上传文件API时&#xff0c;控制台报错&…

K8S pod无损上下线

在最近的K8s服务上线过程中&#xff0c;我发现了一些问题&#xff0c;更具体的说&#xff0c;我在使用阿里云k8s的过程中注意到&#xff1a;会出现slb短时RT增加&#xff0c;Pod部署初期就达到了扩容上限&#xff0c;并且开始大量的扩容&#xff0c;这无疑占用了大量的k8s资源。…

高压放大器应用场景分析

高压放大器是一种重要的电子设备&#xff0c;其功能是将输入信号的电压幅度放大&#xff0c;以满足不同领域对于信号处理和放大的需求。下面安泰电子将对高压放大器在各个应用场景中的重要性进行深入分析&#xff0c;帮助大家更好地理解和使用高压放大器。 一、音频领域 音乐制…

每日一练2023.12.7—— 情人节【PTA】

题目链接&#xff1a;L1-035 情人节 题目要求&#xff1a; 以上是朋友圈中一奇葩贴&#xff1a;“2月14情人节了&#xff0c;我决定造福大家。第2个赞和第14个赞的&#xff0c;我介绍你俩认识…………咱三吃饭…你俩请…”。现给出此贴下点赞的朋友名单&#xff0c;请你找出…

《opencv实用探索·十三》opencv之canny边缘检测

1、canny边缘检测应用场景 目标检测&#xff1a; Canny边缘检测可以用于检测图像中的目标边缘&#xff0c;从而帮助识别和定位物体。在目标检测的流程中&#xff0c;边缘通常是检测的第一步。 图像分割&#xff1a; Canny边缘检测可用于图像分割&#xff0c;即将图像划分为具有…

css 元素前后添加图标(::before 和 ::after 的妙用)

<template><div class"container"><div class"label">猜你喜欢</div></div> </template><style lang"scss" scoped> .label {display: flex;&::before,&::after {content: "";widt…

Python小案例:while练习题

目录 while练习题&#xff1a;1、存款多少年能翻倍2.小球坠落长度计算3、猴子吃桃4、计算&#xff1a;1-23-4...99-100的和 while练习题&#xff1a; 1、存款多少年能翻倍 1万本金&#xff0c;年利息&#xff1a;0.0325&#xff0c;求连本带息多少年能翻倍 解析&#xff1a;…

智能化与数字化:开展企业合规工作的新价值与方法

在现代商业环境中&#xff0c;企业合规成为了一项至关重要的任务。随着法规和监管标准的增加以及对企业道德和责任的更高要求&#xff0c;开展合规工作不仅有助于保护企业的声誉和利益&#xff0c;还能提升企业的竞争力和可持续发展。本文将探讨通过智能化和数字化手段开展合规…

领先英伟达的GPU1.6倍性能,AMD发布最强AI芯片Instinct MI300

AMD发布最强AI芯片 Instinct MI300X AI 加速器和 Instinct MI300A 数据中心 APU&#xff0c;声称比 Nvidia 的竞争 GPU 领先 1.6 倍。与 Nvidia 竞争产品相比&#xff0c;在以下几个关键方面展示了显著优势&#xff1a;配置方面 内存容量&#xff1a;MI300X&#xff1a;拥有 1…

系列学习前端之第 2 章:一文精通 HTML

全套学习 HTMLCSSJavaScript 代码和笔记请下载网盘的资料&#xff1a; 链接: https://pan.baidu.com/s/1-vY2anBdrsBSwDZfALZ6FQ 提取码: 6666 HTML 全称&#xff1a;HyperText Markup Language&#xff08;超文本标记语言&#xff09; 1、 HTML 标签 1. 标签又称元素&#…

系列学习前端之第 3 章:一文精通 css

全套学习 HTMLCSSJavaScript 代码和笔记请下载网盘的资料&#xff1a; 链接: 百度网盘 请输入提取码 提取码: 6666 一、CSS基础 1. CSS简介 CSS 的全称为&#xff1a;层叠样式表 ( Cascading Style Sheets ) 。 CSS 也是一种标记语言&#xff0c;用于给 HTML 结构设…

欧洲原料药认证注册信息查询方法-CEP数据库

欧盟是全球最大、最重要的药品国际市场之一&#xff0c;药品需求市场非常庞大。中国药企要进入欧盟市场&#xff0c;必须获得CEP认证。 CEP认证与COS认证等同&#xff0c;均代表欧洲药典适应性证书 COS&#xff08;Certificate of Suitability&#xff09;是指欧洲药典适用性认…

NVRAM相关

1. Modem NVRAM四个分区 nvdata&#xff1a;手机运行过程中&#xff0c;使用(读写)的NVRAM(除了存在protect_f和protect_s中的NVRAM)都是该分区的nvram文件。存储着普通NVRAM数据、 IMEI、barcode、Calibration数据等。对应的modem path是Z:\NVRAM。NVRAM目录下有CALIBRAT、NVD…

window环境下使用nginx部署多个项目(详细)

在官网下载相应版本的nginx安装包&#xff0c;链接如下&#xff1a;nginx: download 下载压缩包之后找一个目录解压就行了&#xff0c;我这里放在 D:\Program Files (x86) 目录下。 可以直接双击nginx.exe 本地启动nginx服务器。但是更推荐使用命令行&#xff1a;在这个目录下c…

「神印王座」萝莉女神小六打劫,白送10万功勋点,王原原恋人登场

Hello,小伙伴们&#xff0c;我是拾荒君。 备受瞩目的《神印王座》第84集终于更新了。更新后&#xff0c;拾荒君也是迫不及待地观看了一番。在本集中&#xff0c;龙皓晨率领的光之晨曦猎魔团在成功完成一项王级任务后&#xff0c;每个成员都获得了丰厚的功勋点。然而&#xff0…

[⑦ADRV902x]: JESD204学习笔记

前言 JESD204B/C基于SERDES&#xff08;SERialization/DESerialization&#xff09;技术&#xff0c;也就是串化和解串&#xff0c;在发送端将多位并行的数据转换为1 bit的串行数据&#xff0c;在接收端将串行数据恢复成原始的并行数据。 在JESD204接口出现以前&#xff0c;数…