首页 > 其他分享 >【专栏精选】使用LeanCloud实现玩家登陆

【专栏精选】使用LeanCloud实现玩家登陆

时间:2023-04-28 16:38:59浏览次数:37  
标签:www 代码 大智 玩家 专栏 using LeanCloud public 小新


本文节选自洪流学堂公众号技术专栏《大话Unity2019》,未经允许不可转载。

洪流学堂公众号回复专栏,查看更多专栏文章。


洪流学堂,让你快人几步。你好,我是郑洪智。

小新:“今天我们是不是该学习登陆了?”
大智:“没错,不过登陆我不准备给你讲,你自己学,有啥问题再问我。”
小新:“好的吧,正好考验下我自己这么多天学习的成果。”

LeanCloud的登陆

大智:“开始写代码之前,你先思考下这个问题应该如何解决,基本步骤是什么?”
小新:“我觉得按照智哥这么久对我的熏陶来说,步骤大概是这样的”

  1. 阅读文档,登陆的文档在这里https://leancloud.cn/docs/rest_api.html#hash964666
  2. 按照文档写代码,先设计个简单的UI,然后写逻辑代码

大智:“嗯,不错不错,那就开干吧”

小新阅读完文档,打开Unity。

设计UI

小新:“这个UI和昨天的注册UI是差不多一样的呢”

大智:“不错,你这审美比我好不少呢,哈哈哈”

登陆的代码

using System;
using System.Collections;
using System.Text;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;

public class LeanCloudLogin : MonoBehaviour
{
    public string AppId;
    public string AppKey;

    public InputField Username;
    public InputField Password;

    public void Login()
    {
        StartCoroutine(LoginCo());
    }

    IEnumerator LoginCo(){
        
        var jsonObj = new RegJson()
        {
            username = Username.text,
            password = Password.text
        };

        // 从文档获取的url
        var url = "https://5jmvfx9e.api.lncld.net/1.1/login";

        var json = JsonUtility.ToJson(jsonObj);
        Debug.Log(json);

        // 采用昨天大智讲的取巧的办法POST json数据
        var www = UnityWebRequest.Put(url, json);
        www.method = "POST";
        www.SetRequestHeader("X-LC-Id", AppId);
        www.SetRequestHeader("X-LC-Key", AppKey);
        www.SetRequestHeader("Content-Type", "application/json");


        yield return www.SendWebRequest();

        if (www.isHttpError || www.isNetworkError)
        {
            Debug.LogError(www.error);
            Debug.LogError(www.downloadHandler.text);
        }
        else{
            Debug.Log(www.downloadHandler.text);
        }
    }
}

小新:“大智,我这代码里用了你昨天说的取巧的办法来POST数据。”

得到如下结果,就说明登陆成功啦。
{"sessionToken":"cc5rvs6nj5u297m6tiso5b380","updatedAt":"2019-03-24T10:35:07.212Z","objectId":"5c975d5b42cda600722b942e","username":"test","createdAt":"2019-03-24T10:35:07.212Z","emailVerified":false,"mobilePhoneVerified":false}

优化代码

大智:“你有没有发现这里有很多地方的代码,和昨天的注册是重复的?”
小新:“确实是”
大智:“那你尝试下能不能把登录和注册合并到一起,让整个流程更符合正常游戏的流程,代码也能更简洁。”

优化UI

UI改成这样,就能注册和登陆一体了。

优化代码
using System;
using System.Collections;
using System.Text;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;

public class LeanCloudUser : MonoBehaviour
{
    public string AppId;
    public string AppKey;

    public InputField Username;
    public InputField Password;

    public void Reg()
    {
        StartCoroutine(UserCo("/users"));
    }

    public void Login(){
        StartCoroutine(UserCo("/login"));
    }

    IEnumerator UserCo(string path){
        
        var jsonObj = new RegJson()
        {
            username = Username.text,
            password = Password.text
        };

        var url = "https://5jmvfx9e.api.lncld.net/1.1" + path;

        var json = JsonUtility.ToJson(jsonObj);
        Debug.Log(json);
        var www = UnityWebRequest.Put(url, json);
        www.method = "POST";
        www.SetRequestHeader("X-LC-Id", AppId);
        www.SetRequestHeader("X-LC-Key", AppKey);
        www.SetRequestHeader("Content-Type", "application/json");


        yield return www.SendWebRequest();

        if (www.isHttpError || www.isNetworkError)
        {
            Debug.LogError(www.error);
            Debug.LogError(www.downloadHandler.text);
        }
        else{
            Debug.Log(www.downloadHandler.text);
        }
    }
}

总结

小新:“我把url的路径提取了出来,这样就可以复用绝大多数代码了,你看怎么样?”
大智:“嗯,不错不错,架构的演进是随着需求来的,所以需要不断地重构代码才能保持代码的整洁。现在代码这样就足够了,但是加入需求以后,可能这就不是最优的代码结构了。”

思考题

大智:“你再想想还能如何抽象、封装,让这个代码复用程度更高呢?”
小新:“好嘞!”
大智:“收获别忘了分享出来!也别忘了分享给你学Unity的朋友,也许能够帮到他。”


洪流学堂公众号回复专栏,查看更多专栏文章。

《大话Unity2019》,大智带小新学Unity2019的有趣经历,让你学Unity更简单。


标签:www,代码,大智,玩家,专栏,using,LeanCloud,public,小新
From: https://blog.51cto.com/u_5746184/6234782

相关文章

  • 【专栏精选】实战:百度语音合成
    本文节选自洪流学堂公众号技术专栏《大话Unity2019》,未经允许不可转载。洪流学堂公众号回复语音识别获取源码工程。洪流学堂,让你快人几步。你好,我是郑洪智。大智:“昨天我们实战了语音识别,在人工智能的语音领域,还有很大一块是语音合成,也就是TexttoSpeech,文字转语音。”小新:“是不......
  • 【专栏精选】热更新之xLua
    本文节选自洪流学堂公众号技术专栏《大话Unity2019》,未经允许不可转载。洪流学堂公众号回复专栏,查看更多专栏文章。洪流学堂,让你快人几步。你好,我是郑洪智。小新:“之前你提到过,Unity热更新有两大流派,C#派和lua派,那lua派是啥样的呢?”大智:“lua是一门历史悠久的脚本语言,从端游那个年......
  • 【专栏精选】Unity热更新之ILRuntime
    本文节选自洪流学堂公众号技术专栏《大话Unity2019》,未经允许不可转载。洪流学堂公众号回复专栏,查看更多专栏文章。洪流学堂,让你快人几步。你好,我是郑洪智。小新:“热更新真的是打开了一片天啊,现在我越发感觉热更新能做的事情太多了。之前做了一个项目,每次打包都好花费半小时,如果有......
  • 【专栏精选】Unity中的HTTP网络通信
    本文节选自洪流学堂公众号技术专栏《大话Unity2019》,未经允许不可转载。洪流学堂公众号回复专栏,查看更多专栏文章。洪流学堂,让你快人几步。你好,我是郑洪智。大智:“小新,今天开始,我们来学习Unity中的HTTP通信。”小新:“为啥不先学Tcp和Udp呢?这俩不是基础么?”大智:“虽然这俩是基础,但......
  • 【专栏精选】实战:百度语音识别
    本文节选自洪流学堂公众号技术专栏《大话Unity2019》,未经允许不可转载。洪流学堂公众号回复语音识别获取源码工程。洪流学堂,让你快人几步。你好,我是郑洪智。大智:“今天给你来点刺激的。”小新满面红光:“啥刺激的?人家可还是个小孩子。”大智:“带你实战!”小新:“啊?智哥你变了!”大......
  • 视觉定位领域专栏(一)领域介绍、应用场景和研究难点
    前言 上一篇介绍了什么是视觉定位,以及视觉定位在各行各业的应用点和目前的研究难点在哪。本篇主要介绍视觉定位领域常用的一些数据集,分为室内定位数据集和室外定位数据集,每个数据集附有数据集获取地址和数据集样例。本教程禁止转载。同时,本教程来自知识星球【CV技术指南】更多技......
  • 视觉定位领域专栏(一)领域介绍、应用场景和研究难点
    前言 本篇主要介绍三个方面,即视觉定位领域介绍、应用场景以及研究难点,同时会对专栏后续讲解内容做一个概述。本教程禁止转载。同时,本教程来自知识星球【CV技术指南】更多技术教程,可加入星球学习。欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文......
  • 语义分割专栏(二)复习FCN的编解码结构
    前言 在这一期中,我们先简要复习一遍FCN网络,随后进入今天的重点——编码器-解码器架构。本教程禁止转载。同时,本教程来自知识星球【CV技术指南】更多技术教程,可加入星球学习。欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。CV......
  • 语义分割专栏(一)解读FCN
    前言 本文将介绍全卷积神经网络(FullyConvolutionalNetwork,简称FCN)的基础知识,包括它的网络结构、起源、应用、输入输出格式和pytorch代码实现等内容。本教程禁止转载。同时,本教程来自知识星球【CV技术指南】更多技术教程,可加入星球学习。欢迎关注公众号CV技术指南,专注于计算机......
  • 语义分割专栏(零)语义分割概述
    前言 在计算机视觉领域中,图像识别是一项非常重要的任务。而语义分割则是其中的一个子任务。与图像分类和目标检测不同,语义分割不仅需要识别出图像中的物体,还需要将每个像素分配给它所属的类别。本专栏适用于想要入门语义分割与想要对语义分割有一个全面系统的了解的读者。本教程......