当前位置: 首页 > news >正文

记录: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包含账号和密码输入栏&#xff0c;包括登录和注册按键添加背景音乐编写脚本控制音乐 退出按钮编写脚本 背景图片完整代码 一个小demo&#xff0c;登录和注册的实现&#xff08;包括GUI和数据库操控&#xff09; 需求分析 自行设计GUI&#xff0c;要求 1.包…...

OpenCV | 模版匹配

import cv2 #opencv读取的格式是BGR import numpy as np import matplotlib.pyplot as plt#Matplotlib是RGB %matplotlib inline 模版匹配 模版匹配和卷积原理很像&#xff0c;模版在原图像上从原点开始滑动&#xff0c;计算模版与&#xff08;图像被模版覆盖的地方&#xff…...

【算法刷题】Day7

文章目录 283. 移动零1089. 复写零 283. 移动零 原题链接 看到题目&#xff0c;首先看一下题干的要求&#xff0c;是在原数组内进行操作&#xff0c;平切保持非零元素的相对顺序 这个时候我们看到了示例一&#xff1a; [ 0, 1, 0, 3,12 ] 这个时候输出成为了 [ 1, 3, 12, 0, …...

前端 | iframe框架标签应用

文章目录 &#x1f4da;嵌入方式&#x1f4da;图表加载显示&#x1f4da;100%嵌入及滑动条问题&#x1f4da;加载动画保留 前情提要&#xff1a; 计划用iframe把画好的home1.html&#xff08;echarts各种图表组成的html数据大屏&#xff09;嵌入整合到index.html&#xff08;搭…...

linux -系统通用命令查询

有时候内网环境下&#xff0c;系统有些命令没有安装因此掌握一些通用的linux 命令也可以帮助我们解决一些问题查看 1.查看系统内核版本 uname -r2.查看系统版本 cat /etc/os-release3. 查看cpu 配置 lscpu4.查看内存信息 free [参数] 中各个数值的解释如下表 数值解释t…...

python炒股自动化(1),量化交易接口区别

要实现股票量化程序化自动化&#xff0c;就需要券商提供的API接口&#xff0c;重点是个人账户小散户可以申请开通&#xff0c;上手要简单&#xff0c;接口要足够全面&#xff0c;功能完善&#xff0c;首先&#xff0c;第一步就是要找对渠道和方法&#xff0c;这里我们不讨论量化…...

LeetCode(35)螺旋矩阵【矩阵】【中等】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 54. 螺旋矩阵 1.题目 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a…...

BeanUtil.copyProperties的优化与使用(解决copyProperties null值覆盖问题)

BeanUtil.copyProperties的优化与使用 前言一、copyProperties是什么&#xff1f;二、使用步骤1.引入库2.基础使用3.进阶使用4.实用场景 总结 前言 BeanUtil.copyProperties的优化与使用 一、copyProperties是什么&#xff1f; 在java中&#xff0c;我们想要将一个类的值赋值…...

Redis基本操作及使用

&#x1f4d1;前言 本文主要是【Redis】——Redis基本操作及使用的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一…...

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的镜像源&#xff0c;包括阿里的、网易的&#xff0c;还有很多教育网的源&#xff0c;比如&#xff1a;清华源、中科大源。推荐使用中科大源&#xff0c;快得很。 /etc/apt/sources.list编辑/etc/apt/sources.list文件, 在文件最前面添加以下条目(操作前…...

如何给shopify的网址做301跳转

很多shopify的运营者或者推广者由于缺货或者货物变更&#xff0c;又或者自己更换了使用的主题&#xff0c;导致自己的URL结构发生了变化&#xff0c;由于不想浪费掉自己原有URL 的流量&#xff0c;就想做个301跳转&#xff0c;让自己新的网址来承接原有的流量。接下来给大家介绍…...

Redis之秒杀系统

目录 Redis 秒杀 Mysql数据库设计 Mysql秒杀实现 MysqlRedis秒杀实现 秒杀是一种高并发场景&#xff0c;通常指的是在短时间内&#xff08;秒级别&#xff09;有大量用户同时访问某个商品或服务&#xff0c;争相抢购的情景。在这种情况下&#xff0c;系统需要处理大量并发请…...

c++基础----new

c基础----new 在C中&#xff0c;new是一个运算符&#xff0c;用于动态分配内存并返回指向该内存的指针。它可以用于创建单个对象、数组以及动态分配的对象。 下面是new的几种常见用法&#xff1a; 动态分配单个对象&#xff1a; int* ptr new int; // 动态分配一个int类型…...

Java中的mysql——面试题+答案(存储过程,外键,隔离级别,性能优化)——第23期

当涉及MySQL时&#xff0c;面试题的范围可以涵盖数据库设计、优化、复制、分片等方面。 什么是数据库范式&#xff1f;为什么要遵循数据库范式&#xff1f; 答案&#xff1a; 数据库范式是一组规范&#xff0c;用于设计关系数据库表的结构&#xff0c;以减少数据冗余和提高数据…...

一种新的基于物理的AlGaN/GaN HFET紧凑模型

标题&#xff1a;A new physics-based compact model for AlGaN/GaN HFETs (IEEE MTT-S International Microwave Symposium) 摘要 摘要 - 针对AlGaN/GaN HFET&#xff0c;提出了一种无拟合参数的物理解析模型。对于非饱和操作&#xff0c;建立了两个接入区和栅极下方I-V特性的…...

uniapp基础-教程之HBuilderX基础常识篇02

uniapp创建项目时属性多为vue后缀&#xff1b;其中每个文件中都包含了三段式结构分别是template&#xff1b;script&#xff1b;style形势&#xff0c;分别是前端显示的画面以及js和css样式。 template&#xff1a;说大白话就是给别人看的&#xff0c;我们打开页面就可以看到的…...

如何源码编译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病毒分析

这是一个非常古老的文件夹病毒&#xff0c;使用XP系统的文件夹图标&#xff0c;采用VB语言开发&#xff0c;使用了一种自定义的壳来保护&#xff0c;会打开网址http://www.OpenClose.ir,通过软盘、U盘和共享目录进行传播&#xff0c;会在U盘所有的目录下生成自身的副本&#xf…...

Unity安装

DAY1 下载Unity 打开Unity3D官网&#xff0c;下载Unity Hub&#xff0c;管理Unity的软件。链接https://unity.cn/releases (可能需要注册账号&#xff0c;就正常注册登录即可) 如果是新版的hub&#xff0c;可能长下面这个样子&#xff0c;还是英文的&#xff0c;点击圆圈的设…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

日常一水C

多态 言简意赅&#xff1a;就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过&#xff0c;当子类和父类的函数名相同时&#xff0c;会隐藏父类的同名函数转而调用子类的同名函数&#xff0c;如果要调用父类的同名函数&#xff0c;那么就需要对父类进行引用&#…...