记录:Unity脚本的编写8.0
目录
- 需求分析
- 设计GUI
- 包含账号和密码输入栏,包括登录和注册按键
- 添加背景音乐
- 编写脚本控制音乐
- 退出按钮
- 编写脚本
- 背景图片
- 完整代码
一个小demo,登录和注册的实现(包括GUI和数据库操控)
需求分析
自行设计GUI,要求
1.包含账号和密码输入栏,包括登录和注册按键
2.添加背景音乐,使用GUI控制音乐音量和开关
3.退出按钮
4.背景图片,可操控的文本对象用于提示登录是否成功
设计GUI

简单设计了一个GUI界面,包括了输入用户名密码,登录,注册,退出,控制音乐等功能,当然还有一些其他功能,这是为了拓展,先不实现,日后再实现功能
包含账号和密码输入栏,包括登录和注册按键
先添加好账号和密码输入栏,包括登录和注册按钮(当然,输入框也是不可或缺的)
连接好mysql后编写脚本控制实现登录和注册功能
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 void ConnectDB()
{sqlConnection = new MySqlConnection(strConn);try{ sqlConnection.Open();Debug.Log(sqlConnection.State);}catch (Exception){}
}
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 Close()
{if (sqlConnection.State.ToString() == "open"){//操作数据库的最后一步sqlConnection.Close();}
}private void CompareDB(){if(username == usernameDB && password == passwordDB){SceneManager.LoadScene(1);//方法的重载//tip.text= "登录成功";}else{tip.text = "登录失败";}}
}
同时还可以在提示栏提示是否登录成功
添加背景音乐
像之前说的一样,先导入音乐到unity中

给我们想要添加音乐的场景添加这个组件 Audio Source

编写脚本控制音乐
public class Login : MonoBehaviour
{//控制声音的Gui组件AudioSource ads;public Slider slider;public Toggle toggle;public Button button;void Start(){ads = GetComponent<AudioSource>();toggle.onValueChanged.AddListener(PlayMusic);slider.onValueChanged.AddListener(ChangeVolume);button.onClick.AddListener(QuitGAme);}private void QuitGAme(){Application.Quit();}private void ChangeVolume(float arg0){ads.volume = arg0;}private void PlayMusic(bool arg0){if (arg0){ads.Pause();}}}

记得在“音频剪辑”中选择想要的音乐,否则无法运行出想要的结果
退出按钮
既然可以打开或登录,那自然也可以退出
编写脚本
private void exit()
{//判断是否在编辑器模式下运行#if UNITY_EDITOR//如果是,就停止播放UnityEditor.EditorApplication.isPlaying = false;#else//如果不是,就退出应用Application.Quit();#endif
}
这样就可以实现退出的逻辑
当然,挂载脚本和选择对应的按钮等步骤是必不可少的,在此就不多做赘述
背景图片
添加背景图片只需要在unity中创建原始图像

并且在纹理中,可以自定义图片,像文中这样

至于显示登录成功与否的操作,在上面的登录注册中已经实现
完整代码
分为了两个脚本,可以自行操作
/*** 自行设计GUI,要求* 1.包含账号和密码输入栏,包括登录和注册按键* 2.添加背景音乐,使用GUI控制音乐音量和开关* 3.退出按钮* 4.背景图片,可操控的文本对象用于提示登录是否成功* **/using System.Collections;
using UnityEngine;
//using UnityEngine.UIElements;
using System;
using UnityEngine.UI;public class Login : MonoBehaviour
{//控制声音的Gui组件AudioSource ads;public Slider slider;public Toggle toggle;public Button button;void Start(){ads = GetComponent<AudioSource>();toggle.onValueChanged.AddListener(PlayMusic);slider.onValueChanged.AddListener(ChangeVolume);button.onClick.AddListener(QuitGAme);}private void QuitGAme(){Application.Quit();}private void ChangeVolume(float arg0){ads.volume = arg0;}private void PlayMusic(bool arg0){if (arg0){ads.Pause();}}}
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
{//创建GUIpublic 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 updatevoid Start(){button1.onClick.AddListener(login);button2.onClick.AddListener(register);}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 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 = "登录失败";}}
}
这样,一个在unity中实现了登录注册功能的GUI就完成了。
相关文章:
记录:Unity脚本的编写8.0
目录 需求分析设计GUI包含账号和密码输入栏,包括登录和注册按键添加背景音乐编写脚本控制音乐 退出按钮编写脚本 背景图片完整代码 一个小demo,登录和注册的实现(包括GUI和数据库操控) 需求分析 自行设计GUI,要求 1.包…...
OpenCV | 模版匹配
import cv2 #opencv读取的格式是BGR import numpy as np import matplotlib.pyplot as plt#Matplotlib是RGB %matplotlib inline 模版匹配 模版匹配和卷积原理很像,模版在原图像上从原点开始滑动,计算模版与(图像被模版覆盖的地方ÿ…...
【算法刷题】Day7
文章目录 283. 移动零1089. 复写零 283. 移动零 原题链接 看到题目,首先看一下题干的要求,是在原数组内进行操作,平切保持非零元素的相对顺序 这个时候我们看到了示例一: [ 0, 1, 0, 3,12 ] 这个时候输出成为了 [ 1, 3, 12, 0, …...
前端 | iframe框架标签应用
文章目录 📚嵌入方式📚图表加载显示📚100%嵌入及滑动条问题📚加载动画保留 前情提要: 计划用iframe把画好的home1.html(echarts各种图表组成的html数据大屏)嵌入整合到index.html(搭…...
linux -系统通用命令查询
有时候内网环境下,系统有些命令没有安装因此掌握一些通用的linux 命令也可以帮助我们解决一些问题查看 1.查看系统内核版本 uname -r2.查看系统版本 cat /etc/os-release3. 查看cpu 配置 lscpu4.查看内存信息 free [参数] 中各个数值的解释如下表 数值解释t…...
python炒股自动化(1),量化交易接口区别
要实现股票量化程序化自动化,就需要券商提供的API接口,重点是个人账户小散户可以申请开通,上手要简单,接口要足够全面,功能完善,首先,第一步就是要找对渠道和方法,这里我们不讨论量化…...
LeetCode(35)螺旋矩阵【矩阵】【中等】
目录 1.题目2.答案3.提交结果截图 链接: 54. 螺旋矩阵 1.题目 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1: 输入:matrix [[1,2,3],[4,5,6],[7,8,9]] 输出:…...
BeanUtil.copyProperties的优化与使用(解决copyProperties null值覆盖问题)
BeanUtil.copyProperties的优化与使用 前言一、copyProperties是什么?二、使用步骤1.引入库2.基础使用3.进阶使用4.实用场景 总结 前言 BeanUtil.copyProperties的优化与使用 一、copyProperties是什么? 在java中,我们想要将一个类的值赋值…...
Redis基本操作及使用
📑前言 本文主要是【Redis】——Redis基本操作及使用的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 🌄每日一…...
python 继承父类的变量和方法
[root@zz python]# cat a1.py # !/usr/bin/env python # -*- coding: utf-8 -*- class AddrBookEntry(object): ##类定义 def __init__(self,a,b): ##定义构造器 self.var1=a+9 self.var2=b+11 def updatePhone(self, num): # 定义方法 sel…...
ubuntu22.04新机使用(换源,下载软件,安装显卡驱动,锁屏长亮)
换源 国内有很多Ubuntu的镜像源,包括阿里的、网易的,还有很多教育网的源,比如:清华源、中科大源。推荐使用中科大源,快得很。 /etc/apt/sources.list编辑/etc/apt/sources.list文件, 在文件最前面添加以下条目(操作前…...
如何给shopify的网址做301跳转
很多shopify的运营者或者推广者由于缺货或者货物变更,又或者自己更换了使用的主题,导致自己的URL结构发生了变化,由于不想浪费掉自己原有URL 的流量,就想做个301跳转,让自己新的网址来承接原有的流量。接下来给大家介绍…...
Redis之秒杀系统
目录 Redis 秒杀 Mysql数据库设计 Mysql秒杀实现 MysqlRedis秒杀实现 秒杀是一种高并发场景,通常指的是在短时间内(秒级别)有大量用户同时访问某个商品或服务,争相抢购的情景。在这种情况下,系统需要处理大量并发请…...
c++基础----new
c基础----new 在C中,new是一个运算符,用于动态分配内存并返回指向该内存的指针。它可以用于创建单个对象、数组以及动态分配的对象。 下面是new的几种常见用法: 动态分配单个对象: int* ptr new int; // 动态分配一个int类型…...
Java中的mysql——面试题+答案(存储过程,外键,隔离级别,性能优化)——第23期
当涉及MySQL时,面试题的范围可以涵盖数据库设计、优化、复制、分片等方面。 什么是数据库范式?为什么要遵循数据库范式? 答案: 数据库范式是一组规范,用于设计关系数据库表的结构,以减少数据冗余和提高数据…...
一种新的基于物理的AlGaN/GaN HFET紧凑模型
标题:A new physics-based compact model for AlGaN/GaN HFETs (IEEE MTT-S International Microwave Symposium) 摘要 摘要 - 针对AlGaN/GaN HFET,提出了一种无拟合参数的物理解析模型。对于非饱和操作,建立了两个接入区和栅极下方I-V特性的…...
uniapp基础-教程之HBuilderX基础常识篇02
uniapp创建项目时属性多为vue后缀;其中每个文件中都包含了三段式结构分别是template;script;style形势,分别是前端显示的画面以及js和css样式。 template:说大白话就是给别人看的,我们打开页面就可以看到的…...
如何源码编译seaTunnel
如何源码编译seaTunnel 参考Set Up Develop Environment 编译前准备 下列软件需要提前安装好 GitJava ( JDK8/JDK11) 并设置JAVA_HOME 环境变量Scala (只支持 scala 2.11.12 )JetBrains IDEA . 下载源码并编译 git clone gitgithub.com:apache/seatunnel.git cd seatunne…...
msng病毒分析
这是一个非常古老的文件夹病毒,使用XP系统的文件夹图标,采用VB语言开发,使用了一种自定义的壳来保护,会打开网址http://www.OpenClose.ir,通过软盘、U盘和共享目录进行传播,会在U盘所有的目录下生成自身的副本…...
Unity安装
DAY1 下载Unity 打开Unity3D官网,下载Unity Hub,管理Unity的软件。链接https://unity.cn/releases (可能需要注册账号,就正常注册登录即可) 如果是新版的hub,可能长下面这个样子,还是英文的,点击圆圈的设…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
sshd代码修改banner
sshd服务连接之后会收到字符串: SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢? 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头,…...
基于单片机的宠物屋智能系统设计与实现(论文+源码)
本设计基于单片机的宠物屋智能系统核心是实现对宠物生活环境及状态的智能管理。系统以单片机为中枢,连接红外测温传感器,可实时精准捕捉宠物体温变化,以便及时发现健康异常;水位检测传感器时刻监测饮用水余量,防止宠物…...
归并排序:分治思想的高效排序
目录 基本原理 流程图解 实现方法 递归实现 非递归实现 演示过程 时间复杂度 基本原理 归并排序(Merge Sort)是一种基于分治思想的排序算法,由约翰冯诺伊曼在1945年提出。其核心思想包括: 分割(Divide):将待排序数组递归地分成两个子…...
echarts使用graphic强行给图增加一个边框(边框根据自己的图形大小设置)- 适用于无法使用dom的样式
pdf-lib https://blog.csdn.net/Shi_haoliu/article/details/148157624?spm1001.2014.3001.5501 为了完成在pdf中导出echarts图,如果边框加在dom上面,pdf-lib导出svg的时候并不会导出边框,所以只能在echarts图上面加边框 grid的边框是在图里…...
