记录: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就完成了。

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

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

相关文章

智能优化算法应用:基于花授粉算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于花授粉算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于花授粉算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.花授粉算法4.实验参数设定5.算法结果6.参考文献7.…

java游戏制作-王者荣耀游戏

一.准备工作 首先创建一个新的Java项目命名为“王者荣耀”&#xff0c;并在src下创建两个包分别命名为“com.sxt"、”com.stx.beast",在相应的包中创建所需的类。 创建一个名为“img”的文件夹来储存所需的图片素材。 二.代码呈现 package com.sxt; import javax.…

深入理解强化学习——马尔可夫决策过程:贝尔曼期望方程-[举例与代码实现]

分类目录&#xff1a;《深入理解强化学习》总目录 在文章《深入理解强化学习——马尔可夫决策过程&#xff1a;贝尔曼期望方程-[基础知识]》中我们讲到了贝尔曼期望方程&#xff0c;本文就举一个贝尔曼期望方程的具体例子&#xff0c;并给出相应代码实现。 下图是一个马尔可夫…

基于springboot实现私人健身与教练预约管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现私人健身与教练预约管理系统演示 摘要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应…

深入理解虚拟 DOM:提升前端性能的关键技术

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

Vue 定义只读数据 readonly 与 shallowReadonly

readonly 让一个响应式数据变为 **深层次的只读数据**。 shallowReadonly 让一个响应式数据变为 **浅层次的只读数据**&#xff0c;只读第一层。 isReadonly 判断一个数据是不是只读数据。 应用场景&#xff1a;不希望数据被修改时使用。 readonly深层次只读&#xff1a; …

Java实现王者荣耀小游戏

主要功能 键盘W,A,S,D键&#xff1a;控制玩家上下左右移动。按钮一&#xff1a;控制英雄发射一个矩形攻击红方小兵。按钮二&#xff1a;控制英雄发射魅惑技能&#xff0c;伤害小兵并让小兵停止移动。技能三&#xff1a;攻击多个敌人并让小兵停止移动。普攻&#xff1a;对小兵造…

VsCode学习

一、在VsCode 上编写第一个C语言 在VsCode上写代码都是先打开文件夹&#xff0c;这样也方便管理代码和编译器产生的可执行程序&#xff0c;VsCode生成的配置文件等。 1.1打开文件夹 写代码前&#xff0c;首先创立一个文件夹存储以后我们写的VsCode代码&#xff0c;便于管理。…

代码随想录算法训练营 ---第四十九天

前言&#xff1a; 今天是买卖股票的最佳时机系列&#xff0c;本系列之前在学习贪心思想时做过一些。 第一题&#xff1a; 简介&#xff1a; 本题在读题时我们要注意到几个细节 1.本题股票买卖只有一次。2.我们要在最低点买股票&#xff0c;在最高点卖股票。 我的思路&#…

skywalking告警UI界面有告警信息,webhook接口没有回调,400错误

400错误就是回调接口返回数据的属性对应不上 PostMapping(“/webhook”) public void webhook(RequestBody List alarmMessageList) 自定义的实体类AlarmMessage有问题 只能去官网找了 告警实体类官网 Getter EqualsAndHashCode RequiredArgsConstructor NoArgsConstructor(fo…

父进程隐藏——ConsoleApplication903项目

首先我发现用calc来做进程隐藏实验是失败的&#xff0c;父进程一直都是svhost.exe 那么我用我自己生成的cs木马beacon903.exe试试 试试explorer.exe 再试试cmd.exe 可以看到成功变成cmd.exe 可以看到我们可以通过这种方式虚假父进程 以上我们是直接获得的pid&#xff0c;那…

【Kotlin】类与接口

文章目录 类的定义创建类的实例构造函数主构造函数次构造函数init语句块 数据类的定义数据类定义了componentN方法 继承AnyAny&#xff1a;非空类型的根类型Any?&#xff1a;所有类型的根类型 覆盖方法覆盖属性覆盖 抽象类接口:使用interface关键字函数&#xff1a;funUnit:让…

听GPT 讲Rust源代码--src/tools(2)

题图来自AI生成 File: rust/src/tools/rust-analyzer/crates/hir-def/src/src.rs rust-analyzer 是一个 Rust 语言的语法分析器和语义分析器&#xff0c;用于提供代码补全、导航、重构等开发工具。而 rust-analyzer 的代码实现存储在 rust/src/tools/rust-analyzer 这个文件夹中…

亚马逊云科技 re:Invent 2023:引领科技前沿,探索未来云计算之窗

文章目录 一、前言二、什么是亚马逊云科技 re:Invent&#xff1f;三、亚马逊云科技 re:Invent 2023 将于何时何地举行四、亚马逊云科技 re:Invent 2023 有什么内容&#xff1f;4.1 亚马逊云科技 re:Invent 2023 主题演讲4.2 亚马逊云科技行业专家探实战 五、更多亚马逊云科技活…

Unity UGUI的自动布局-LayoutGroup(水平布局)组件

Horizontal Layout Group | Unity UI | 1.0.0 1. 什么是HorizontalLayoutGroup组件&#xff1f; HorizontalLayoutGroup是Unity UGUI中的一种布局组件&#xff0c;用于在水平方向上对子物体进行排列和布局。它可以根据一定的规则自动调整子物体的位置和大小&#xff0c;使它们…

万字详解,和你用RAG+LangChain实现chatpdf

像chatgpt这样的大语言模型(LLM)可以回答很多类型的问题,但是,如果只依赖LLM,它只知道训练过的内容,不知道你的私有数据:如公司内部没有联网的企业文档,或者在LLM训练完成后新产生的数据。(即使是最新的GPT-4 Turbo,训练的数据集也只更新到2023年4月)所以,如果我们…

141.【Git版本控制-本地仓库-远程仓库-IDEA开发工具全解版】

Git-深入挖掘 (一)、Git分布式版本控制工具1.目标2.概述(1).开发中的实际常见(2).版本控制器的方式(3).SVN (集中版本控制器)(4).Git (分布版本控制器)(5).Git工作流程图 (二)、Git安装与常用命令1.Git环境配置(1).安装Git的操作(2).Git的配置操作(3).为常用的指令配置别名 (可…

想成为网络安全工程师该如何学习?

一、网络安全应该怎么学&#xff1f; 1.计算机基础需要过关 这一步跟网安关系暂时不大&#xff0c;是进入it行业每个人都必须掌握的基础能力。 计算机网络计算机操作系统算法与数据架构数据库 Tips:不用非要钻研至非常精通&#xff0c;可以与学习其他课程同步进行。 2.渗透技…

.mat格式文件是什么?及将png,jpg,bmp,gif,tiff,psd等格式图片转为.mat格式(附代码)

很多深度学习网络的输入要求为.mat格式&#xff0c;当然也可以直接修改输入数据的代码&#xff0c;比如修改为使用OpenCV读取图片等&#xff0c;但有些网络修改起来比较麻烦&#xff0c;且.mat数据有很多优势&#xff0c;所以部分网络最好还是用默认的.mat格式数据 目录 一、.…

Gossip协议理解

概述 Gossip协议&#xff0c;又称epidemic协议&#xff0c;基于流行病传播方式的节点或进程之间信息交换的协议&#xff0c;在分布式系统中被广泛使用。 在1987年8月由施乐-帕洛阿尔托研究中心发表ACM上的论文《Epidemic Algorithms for Replicated Database Maintenance》中…