• WP8:在Unity中使用OpenXLive


    Unity 4.2正式版开始添加了对Windows 8、Windows Phone 8等其他平台的支持,而且开发者可以免费使用Unity引擎来开发游戏了。而作为Windows Phone和Windows 8平台上最大的游戏社交网络,OpenXLive也可以无缝支持Unity for WP8和Windows 8的开发。

    本篇文章将介绍如何在Unity for WP8中调用OpenXLive的各种服务。

    安装Unity 4.2正式版

    Unity 4.2正式版下载地址为:http://unity3d.com/unity/download/

    安装OpenXLive SDK

    OpenXLive SDK最新版本的下载地址为:http://developer.openxlive.net

    在Unity工程中使用OpenXLive

    打开Unity 4.2,创建一个新的工程:

    我们为摄像机添加一个简单的C#脚本,在Project窗口的Assets文件下右键,选择Create->C# Script:

    创建完成后双击改脚本文件,会自动打开MonoDevelop或者Visual Studio,具体的切换方式在Edit->Preferences…->External Tools中进行设置。

    打开后可以看到默认的代码:

    将上述代码全部删除,添加一个OnGUI方法,在其中绘制几个按钮:

     1 void OnGUI()
     2 {
     3     if (GUILayout.Button("Game Center", GUILayout.Width(300),     GUILayout.Height(40)))
     4     {
     5     }
     6 
     7     if (GUILayout.Button("Submit Score", GUILayout.Width(300), GUILayout.Height(40)))
     8     {
     9     }
    10 }

    在Unity的开发文档中,可以参考这篇文章《Interaction between Unity and Windows Phone step by step guide》 :

    http://docs.unity3d.com/Documentation/Manual/wp8-unity-interaction.html

    介绍了如何在Unity和Windows Phone之间进行数据交互,我们同样在C#脚本文件中,添加一些返回事件,使得这些事件在Windows Phone中被触发,就可以在其中进行任何OpenXLive操作,包括显示游戏中心、提交分数、获取成就、社交互动等等。

    首先在C#脚本顶部添加对System的引用:

    1 using System;

    然后添加以下事件:

    1 public event EventHandler GameCenterButtonPressed;
    2 public event EventHandler SubmitScoreButtonPressed;

    在按钮被按下时分别返回这些事件:

     1 void OnGUI()
     2 {
     3     if (GUILayout.Button("Game Center", GUILayout.Width(300), GUILayout.Height(40)))
     4     {
     5         if (GameCenterButtonPressed != null)
     6         {
     7             GameCenterButtonPressed(this, EventArgs.Empty);
     8         }
     9     }
    10 
    11     if (GUILayout.Button("Submit Score", GUILayout.Width(300), GUILayout.Height(40)))
    12     {
    13         if (SubmitScoreButtonPressed != null)
    14         {
    15             SubmitScoreButtonPressed(this, EventArgs.Empty);
    16         }
    17     }
    18 }
    19   

    接下来返回Unity,把这个C#脚本应用到摄像机上,直接拖拽该文件到摄像机上即可;或者点击摄像机,在Inspector窗口中,点击Add Component按钮,添加一个MyScript:

     

    之后将此场景保存为DemoScene,到这里在Unity中的编辑就完成了。接下来将Unity工程导出为WP8的工程:

    打开导出的WP8工程,在引用节点添加对OpenXLive的引用:

    打开App.xaml.cs,在构造函数中,启动OpenXLive会话并对UI进行初始化:

     1 GameSession session = XLiveGameManager.CreateSession(APISecretKey); 
     2 XLiveUIManager.Initialize(this, session);
     3 session.CreateSessionCompleted += session_CreateSessionCompleted;
     4 session.Open();
     5 
     6 void session_CreateSessionCompleted(object sender, AsyncEventArgs e)
     7 {
     8     if (e.Result.ReturnValue)
     9     {
    10     }
    11 }

    接下来打开MainPage.xaml.cs,在Unity_Loaded方法中,取出Unity的C#脚本对象:

    1 private void Unity_Loaded()
    2 {
    3     MyScript script = (MyScript)UnityEngine.Object.FindObjectOfType(typeof(MyScript));
    4     script.GameCenterButtonPressed += script_GameCenterButtonPressed;
    5     script.SubmitScoreButtonPressed += script_SubmitScoreButtonPressed;
    6 }

    注意注册事件必须且只能在UI线程中进行操作,如:

     1 void script_GameCenterButtonPressed(object sender, EventArgs e)
     2 {
     3     this.Dispatcher.BeginInvoke(delegate
     4     {
     5         XLiveUIManager.ShowGameCenter();
     6     });
     7 }
     8 
     9 void script_SubmitScoreButtonPressed(object sender, EventArgs e)
    10 {
    11     this.Dispatcher.BeginInvoke(delegate
    12     {
    13         var lbp = XLiveGameManager.CurrentSession.LeaderboardProfiles[0];
    14         Leaderboard lb = new Leaderboard(XLiveGameManager.CurrentSession, lbp);
    15         lb.SubmitScoreCompleted += lb_SubmitScoreCompleted;
    16         lb.SubmitScore(10);
    17     });
    18 }

    这样就可以在Unity的游戏逻辑中调用OpenXLive的相关功能了,特别是提交分数、获取成就等功能。更多OpenXLive相关功能,请查看OpenXLive SDK帮助文档,或访问开发者网站获取。

    参考资料

    OpenXLive Website

    http://www.openxlive.com/

    OpenXLive Developer Website

    http://developer.openxlive.com/

    Getting Started with Open XLive

    http://wiki.openxlive.com/Getting-Started-with-Open-XLive.ashx

     

    更多问题,可以访问我们的论坛

    英文版论坛地址:http://bbs.openxlive.com

    中文版论坛地址:http://bbs.openxlive.net/  

    QQ群:149993869

    技术支持邮箱:support@openxlive.com 

    新浪微博:http://weibo.com/openxlive

  • 相关阅读:
    微信报警提示
    使用pygal图表显示网站API接口数据
    读写文本文件,乱码解决方案
    MD5加密
    将DataTable导入到SQL数据库表中
    NPOI组件操作Excel导入、导出
    二叉树由先序和中序建树
    用两个栈模拟队列
    math type白嫖教程
    IDEA常用快捷键
  • 原文地址:https://www.cnblogs.com/zhxilin/p/3311240.html
Copyright © 2020-2023  润新知