您的位置:首页 > 移动开发 > Unity3D

【小松教你手游开发】【unity实用技能】 unity 接WP8 sdk的一些心得

2018-03-10 15:52 597 查看
1.在wp8的sdk中,sdk可以在vs中生成的.dll文件,放在unity的plugins文件夹里面,unity的脚本就可以随意调用sdk中的函数,这样就已经可以做到unity传数据到手机上。

但很多时候为了耦合性低一点,会在sdk上在封装一层(或者说在sdk的基础上),在unity打包出来的vs工程上的MainPage.xaml.cs文件上写调用函数。然后在unity上写event事件,以发送信息的形式让vs工程捕捉。这样的话dll文件就不用放在unity工程上,在vs工程再添加引用
事例:
unity端:一个包含调用函数的脚本xxxwp8.cs。一个包含回调的脚本xxxwp8Controller.cs

在xxxwp8.cs脚本中注册两个事件

public static event Action<string> onPurchaseProduct;
public static event Action<string,string> onInitSdk;

一个是初始化sdk,一个是支付。
写两个全局函数供其他脚步调研

public static void PurchaseProduct(string productID)
{
CustomEventArgs theEventArgs = new CustomEventArgs();
theEventArgs.args = productID;
onPurchaseProduct(productID);
}

public static void initSdk()
{
CustomEventArgs theEventArgs = new CustomEventArgs();
theEventArgs.args = API_KEY;
theEventArgs.args1 = API_SECRET;
onInitSdk(API_KEY,API_SECRET);
}

这边基本就完成。
接下来是包含回调的脚步xxxwp8Controller.cs
首先是购买成功失败回调事件

public static event Action<string> PurchaseSuccessEvent;
public static event Action<string> PurchaseFailedEvent;

接着是回调函数

public  void OnPurchaseSucceeded(string featureID)
{
}

public  void OnPurchaseFailed(string featureID)
{
}

现在两个回调事件的没有代理,所以在要使用的地方加上代理如

xxxWP8Controller.PurchaseSuccessEvent += OnSkyNetPurchaseSuccess;
xxxWP8Controller.PurchaseFailedEvent +=  OnSkyNetPurchaseFailed;

OnSkyNetPurchaseSuccess,<pre name="code" class="csharp">OnSkyNetPurchaseFailed

这两个函数为空函数也没关系。函数内容写在回调类的函数里就可以。
unity端就是这样。不用加.dll文件进unity的plugins文件夹中。
然后是打出来的包的vs端。首先是要根据sdk给予的文档加各种引用,修改各种参数。
接下来是重点。
修改MainPage.xaml.cs文件。
首先让vs工程能找到你的unity的脚本

public static xxxSDKWP8Controller xxxControllerScript;
private void Unity_Loaded()
{
xxxWP8.onPurchaseProduct += xxxWP8_onPurchaseProduct;
xxxWP8.onInitSdk += xxxWP8_onInitSdk;

xxxControllerScript = (xxxSDKWP8Controller)UnityEngine.Object.FindObjectOfType(typeof(xxxSDKWP8Controller));
}

这样xxxControllerScript就可以在下面的回调中直接调用unity脚本上的函数。

上面也能看到。

xxxWP8.onPurchaseProduct += xxxWP8_onPurchaseProduct;
xxxWP8.onInitSdk += xxxWP8_onInitSdk;

这样的目的就可以使当unity工程上的脚本的世界触发以后能在vs工程反应。

如果所接的sdk以接口方式回调,那就在class上继承接口。重写回调函数

1.public partial class MainPage : PhoneApplicationPage, IPurchaseCallback,IInitSDKCallback

1.void IPurchaseCallback.OnPurchaseFailed(string id, string errorMsg)
2.        {
3.           xxxControllerScript.OnPurchaseSucceeded(id);
4.        }
5.
6.        void IPurchaseCallback.OnPurchaseSucceeded(string id)
7.        {
8.            xxxControllerScript.OnPurchaseSucceeded(id);
9.        }

这样就做到unity和vs之间双向通信
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  51cto
相关文章推荐