【コピペで実装】Unityで作ったゲームにログイン機能を追加してみた

# 概要

Unityで作ったアプリにニフクラ mobile backendを使って無料でログイン機能を追加する方法を紹介します👌
コピペで実装できるので初心者の方でも簡単に実装できます👫

# 使うサービス

* **ニフクラ mobile backend（Unity SDK）**

**無料**で利用可能できるサービスで、簡単にバックエンドの開発ができるニフクラ mobile backendを利用してランキング機能を実装していきます。
以下より会員登録を行うと、**環境構築する必要なし**にすぐ利用できます👩‍💻👨‍💻

##### 会員登録

https://mbaas.nifcloud.com/

Unity SDKのドキュメントは[こちら](https://mbaas.nifcloud.com/doc/current/#/Unity)です👀
ニフクラ mobile backendのサービスの概要は[こちら](https://mbaas.nifcloud.com/)をご参照ください👀

# Unityとの連携方法
ニフクラ mobile backendの[クイックスタート](https://mbaas.nifcloud.com/doc/current/introduction/quickstart_unity.html)で画像を用いながらわかりやすく説明しているので 是非以下を参考に連携させてみてください😃✨

▼イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492105/9743e2cb-7601-791d-9bfd-f6e226557cf9.png)

##### クイックスタート
https://mbaas.nifcloud.com/doc/current/introduction/quickstart_unity.html

# 実装方法

今回は1つのファイルに新規会員登録・ログイン・ログアウト機能を実装していきます👩🏼‍🤝‍🧑🏻💨

# 使用するスクリプトテンプレートなど実装前のコード

新規会員登録・ログイン・ログアウト処理を書く前の状態は以下のような感じです。
userNameとpasswordを入力するInputFieldを作成しています。
新規会員登録をする際は↓の画像と同じようなシーンを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492105/96824bd6-5c4f-a9fe-089c-e7f2b40c59ee.png)

既に会員登録をしている場合は、↓のInputFieldにユーザー名とパスワードを入力してログインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492105/52b12235-376f-560c-25fa-969b024f6569.png)

現在は以下のコードだけ書いています。

```C#
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using NCMB;
using UnityEngine.SceneManagement; 

public class ***スクリプト名*** : MonoBehaviour
{
    public InputField UserName;
    public InputField PassWord;
    private string currentPlayerName;

   //ここの中に新規会員登録・ログイン・ログアウト処理を書いていきます
}
```

※1画面で新規会員登録とログインをするとデータが保存できないエラーが起きることがあります😥
エラー内容と解決方法は以下のブログをご参照ください。
https://blog.mbaas.nifcloud.com/entry/2020/10/01/145149

# ログイン機能

（★の部分が今回ニフクラ mobile backendのコードです。他の箇所はゲームの処理です。）

```c#
public void Login()
    {
        print (UserName.text);
        print (PassWord.text);

        //★NCMBUserのインスタンス作成 
        NCMBUser user = new NCMBUser ();

        // ★ユーザー名とパスワードでログイン
        NCMBUser.LogInAsync (UserName.text, PassWord.text, (NCMBException e) => {    
            if (e != null) {
                UnityEngine.Debug.Log ("ログインに失敗: " + e.ErrorMessage);
            } else {
                UnityEngine.Debug.Log ("ログインに成功！");
                 //画面遷移
                SceneManager.LoadScene (*);//遷移させたいシーンを指定
            }
        });
    }
```

# 新規会員登録

```C#
public void SignUp()
    {
        print (UserName.text);
        print (PassWord.text);

        //★NCMBUserのインスタンス作成 
        NCMBUser user = new NCMBUser ();
        
        //ユーザ名とパスワードの設定
        user.UserName = UserName.text;
        user.Password = PassWord.text;
        
        //★会員登録
        user.SignUpAsync ((NCMBException e) => { 
            if (e != null) {
                UnityEngine.Debug.Log ("新規登録に失敗: " + e.ErrorMessage);
                SceneManager.LoadScene (*); //遷移させたいシーンを指定
            } else {
                UnityEngine.Debug.Log ("新規登録に成功");
                //★カレントユーザーを確認
                NCMBUser currentUser = NCMBUser.CurrentUser;
                    if (currentUser != null) {
                        UnityEngine.Debug.Log ("ログイン中のユーザー: " + currentUser.UserName);
                        Login();
                    } else {
                        UnityEngine.Debug.Log ("未ログインまたは取得に失敗");
                    }
                 //画面遷移
                SceneManager.LoadScene (*);//遷移させたいシーンを指定
            }
        });
    }
```

# ログアウト

```c#
public void Userlogout()
    {
        NCMBUser.LogOutAsync ( (NCMBException e) => {
            if(e == null ){
                UnityEngine.Debug.Log ("ログアウト成功");
            }else{
                UnityEngine.Debug.Log ("ログアウトに失敗: " + e.ErrorMessage);
            }
        });
    }
```

# 結果

ニフクラ mobile backendの会員管理を見てみると、ちゃんと登録されています😋❣
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492105/4e102d32-25ca-b39a-497b-371c89bb5a9f.png)

# 最後に

以上で、ログイン機能が追加できました！
さらに、別の記事でランキング機能を追加する記事も公開しているので、是非ご覧ください👁‍🗨📚

https://qiita.com/itominami/items/14dfb630bcb83c9b4f52

不明点があれば[ユーザーコミュニティ](https://github.com/NIFCLOUD-mbaas/UserCommunity)へ質問してみてください！(無料プランから利用可能)
有償プランを契約している方は[テクニカルサポート](https://portal.support.nifcloud.com/hc/ja/articles/1500006058861)で個別にサポートしていただけます！