二、使用playfab进行玩家登录

playfab为开发者提供了可以对玩家进行身份验证的方法,可以使用玩家的设备标识或者是自定义的用户名作为标识:

LoginWithCustomID , LoginWithAndroidDeviceID , LoginWithIOSDeviceID

此处的登录方法均为匿名登录。当玩家更换设备之后账号的信息就找不回来了,所以我们需要向玩家提供使用固定账号登陆的方法,比如使用邮箱,google账号,steam账号,Nintendo账号等。

1.unity编辑器扩展

这一步是方便后续的调试,以便于不用启动游戏也能进行调试。如果只是想要查看登录playfab的方法,这一步可以跳过。

1.在asset中创建一个Editor文件夹,在里面添加脚本

 打开脚本,添加如下的命名空间。UnityEditor是为了扩展编辑器。

using UnityEditor;
using PlayFab;
using PlayFab.ClientModels;

添加如下代码。

public class PlayfabControllWindow : EditorWindow
{

    [MenuItem("Window/PlayfabControl")]
    public static void ShowWindow()
    {
        EditorWindow.GetWindow(typeof(PlayfabControllWindow));
    }

}

该类继承自EditorWindow;

在让窗口在Window下的PlayfabControl展开,如果不想放在Window下也可以使用其他的名称 。

在unity中效果如下:该窗口放置在Window下的PlayfabControl中

 2.添加一个按钮,调用登录方法

string myAccount;
    private void OnGUI()
    {
        myAccount = EditorGUILayout.TextField("本人登录id", myAccount);

        if (GUILayout.Button("登录"))
        {
            Login(myAccount);
        }
    }

 调用OnGUI方法进行窗口布局。

创建一个TextField输入玩家的CustomID,在游戏中此处可以获取玩家的设备标识号。

创建一个按钮,当按下按钮的时候调用Login方法,传入 输入框的输入的ID

窗口如图:

 2.使用匿名账号登陆

1.编写Login方法进行匿名账号登陆

    public void Login(string myAccount)
    {
        if (myAccount == "") myAccount = "GettingStartedGuide";
        if (string.IsNullOrEmpty(PlayFabSettings.staticSettings.TitleId))
        {
            //设置你自己游戏的TitleId,如果刚刚在unity中设置了游戏,就可以跳过这一步
            PlayFabSettings.staticSettings.TitleId = "9DB1F";
        }
        PlayFabClientAPI.LoginWithCustomID(new LoginWithCustomIDRequest()
        {//此处填写LoginWithCustomIDRequest的参数,注意用 逗号 分隔而不是分号
            CustomId = myAccount,
            CreateAccount = true
        },
        result =>
        {//一个回调函数,如果登录成功,返回登录结果
            Debug.Log("Congratulations, you made your first successful API call!");
        },
        error =>
        {//如果登录失败,返回错误报告
            Debug.LogError(error.GenerateErrorReport());
        });
    }
}

此处第一个if是为了在编辑器中方便使用,如果没有输入账户id则使用一个固定的账户登录。

之后保存代码,进入编辑器,打开窗口点击“登录”按钮,即可登录到playfab

如果在输入框输入不同的字符则可以创建并登录到不同的账号。

2.输入不同的ID登录到不同的账号

如图输入WYouYYY点击登录,等待console响应成功后查看playfab玩家界面,点击search出现一个新玩家

打开该玩家界面可以看到:

 3.将账号绑定到邮箱

调用playfaAPI的AddUsernamePassword

查看api得知需要邮箱,用户名和密码

1.首先编辑器扩展一个绑定布局,

        GUILayout.Label("账号绑定");
        usernameInput = EditorGUILayout.TextField("用户名:", usernameInput);
        emailInput = EditorGUILayout.TextField("邮箱:", emailInput);
        passwardInput = EditorGUILayout.TextField("密码:", passwardInput);

        if (GUILayout.Button("绑定"))
        {
            BindAccount();
        }

为了区分不同的登录,将上面的登录按钮修改为匿名登录,添加一个使用账号登录的按钮

2.调用api实现账号绑定:

    public void BindAccount()
    {
        //首先判断是否有输入正确的字符
        //真正的游戏中可以判断玩家输入的字符是否合法,比如邮箱验证,密码的要求等
        if (usernameInput == "" || emailInput == "" || passwardInput == "")
            return;
      
        var request = new AddUsernamePasswordRequest()
        {
            Username = usernameInput,
            Email = emailInput,
            Password = passwardInput
        };

        //调用API进行绑定
        PlayFabClientAPI.AddUsernamePassword(request,
            result =>
            {
                Debug.Log("账号" + myAccount + "已绑定到邮箱" + emailInput);
            },
            error =>
            {
                Debug.LogError(error.GenerateErrorReport());
            });
    }

使用以上函数进行账号绑定,在开头可以进行判断,比如玩家的输入是否合法等。

request是一个储存绑定信息的类,是AddUsernamePassword的参数

3.绑定账号测试

在unity中打开刚才的窗口,输入对应的信息,点击绑定

绑定成功:(此处id未填写会使用默认的id)

 

如果此时打开playfab,找到对应玩家就可以看到绑定的信息

 

 如果已经绑定的账号重新绑定会报错

 

4.使用邮箱和密码登录

再绑定邮箱之后就可以使用邮箱和密码进行登录了

OnGui中添加的按钮下执行LoginWithEmail

编写LoginWithEmail的函数体;

    public void LoginWithEmail()
    {
        var request = new LoginWithEmailAddressRequest()
        {//还可以使用TitleId指定登录的游戏
            Email = emailInput,
            Password = passwardInput
        };

        PlayFabClientAPI.LoginWithEmailAddress(request,
            result =>
            {
                Debug.Log("欢迎回来: " + result.PlayFabId);
            },
            error =>
            {
                Debug.LogError(error.GenerateErrorReport());
            });
    }

在unity编辑器中,输入邮箱,密码,点击登录到现有账号

登录成功如图所示:

 登陆失败:

playfab还提供了许多连接到现有账户的方法,这里就不展开赘述了,以后有闲心了再来补充

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值