Unity 通过 SpringCloud 实现学生成绩排名

本文介绍如何利用Unity与SpringCloud相结合,实现学生成绩的排名查询功能。首先在数据库中插入学生和成绩信息,接着在SpringCloud数据库接口中添加查询排名的方法,并在XML文件配置SQL。然后在Web控制器上实现查询方法,调用接口获取排名。在Unity中创建UI,通过C#脚本响应S键查询,结果显示在Unity界面上。
摘要由CSDN通过智能技术生成

数据库

首先给学生表插入三个学生的信息
在这里插入图片描述
再给成绩表插入对应的信息
在这里插入图片描述
再给课程表添加信息
在这里插入图片描述


数据库接口

在接口添加查询排名的方法

// 根据课程号 cid 查询学生信息,按成绩排名
List<Student> queryScoreRank(Integer cid);

在 XML 文件配置该方法的 SQL

<select id="queryScoreRank"  parameterType="java.lang.Integer" resultType="Student">
    SELECT s1.id, s1.sname, s2.score, c.cname
    FROM students AS s1, scores AS s2, courses AS c
    WHERE s2.cid = c.id AND s2.sid = s1.id AND c.id = #{cid}
    ORDER BY score DESC
</select>

控制器

在 Web Controller 增加查询排名的方法,调用数据库接口查询排名

    // 查询成绩排名
    @GetMapping("/queryScoreRank/{cid}")
    public List<Student> queryScoreRank(@PathVariable("cid") Integer cid) {
        return studentMapper.queryScoreRank(cid);
    }

Unity

创建一个 Cube 物体和两个文本框,上面的文本框提示点击 S 键查看排名,下面的文本框用来显示结果
在这里插入图片描述
添加一个 C# 脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Networking;
using Newtonsoft.Json;

public class QueryScoreRank : MonoBehaviour
{
    public Text text;

    // Start is called before the first frame update
    void Start()
    {
        // 按下 S 键后就通过 GET 请求获取数据
        if (Input.GetKeyDown(KeyCode.S))
        {
            StartCoroutine(GetRequest(3));
        }
    }

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

    public IEnumerator GetRequest(int cid)
    {
        string url = "http://localhost:8010/unity/queryScoreRank/" + cid;
        Debug.Log("请求的url:" + url);
        using (UnityWebRequest webRequest = UnityWebRequest.Get(url))
        {

            yield return webRequest.SendWebRequest();


            // 接受返回的数据
            Dictionary<string, object> data = null;

            // 出现网络错误
            if (webRequest.isHttpError || webRequest.isNetworkError)
            {
                Debug.LogError(webRequest.error + "\n" + webRequest.downloadHandler.text);
            }
            else
            {
                string result = "姓名  成绩  实验名\n";
                // 输出获取到的数据到控制台
                List<Student> students = JsonConvert.DeserializeObject<List<Student>>(webRequest.downloadHandler.text);
                foreach (Student student in students)
                {
                    result += student.sname + " " + student.score + " " + student.cname + "\n";
                }
                text.text = result;
            }
        }
    }

    public class Student
    {
        public int id;
        public string sname;
        public string cname;
        public int score;
    }
}

把显示结果的文本组件拖动到 public text 域
在这里插入图片描述


测试

启动 Unity,点击 S 键
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值