博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WP8:在Unity中使用OpenXLive
阅读量:5170 次
发布时间:2019-06-13

本文共 3413 字,大约阅读时间需要 11 分钟。

源地址:http://www.cnblogs.com/zhxilin/p/3311240.html

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正式版下载地址为:

安装OpenXLive SDK

OpenXLive SDK最新版本的下载地址为:

在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》 :

介绍了如何在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(delegate12     {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

OpenXLive Developer Website

Getting Started with Open XLive

 

转载于:https://www.cnblogs.com/123ing/p/3914196.html

你可能感兴趣的文章
[置顶] ListBox控件的数据绑定
查看>>
链表插入排序
查看>>
http://blog.csdn.net/yunye114105/article/details/7997041
查看>>
设计模式这个东西 刚刚发现几种模式好像大同小异啊
查看>>
关于 主键和外键
查看>>
python集合的交,差,并,补集合运算汇总
查看>>
校园分期支付的机遇和风险
查看>>
怕忘记-windows 2003服务器安装Node.js NPM
查看>>
一鍵分享(優化后)
查看>>
dcm4che 的依赖无法下载
查看>>
cygwin主要命令
查看>>
多线程存在哪些风险
查看>>
洛谷P2692 覆盖 题解
查看>>
Linux下清理内存和Cache方法见下文:
查看>>
【AngularJs-模块篇-Form篇】
查看>>
支持向量基
查看>>
单链表 类
查看>>
类的组合 构造函数的用法
查看>>
ORACLE SQL:经典查询练手第三篇
查看>>
ubuntu 包管理
查看>>