最近接了一个3D开发项目,另外还做着iPhone上的游戏,还为一款色铅笔的iPad版做了demo,各种事各种事,现在才有时间过来更新些东西
使用Unity3D开发iOS项目,多数时候免不了要用到iOS端的一些功能,例如添加iAD或Admob广告,例如程序内付费,例如GameCenter排行榜,无非是Xcode中的代码,要拿过Unity这边来,用C#(我一般是用C#)调用.
现在我拿一个最简单的例子讲下——从游戏中点击(鼓励用户评级或购买完整版),在iTune中打开游戏或应用所在页面。
首先在Xcode中随便新建一个工程,或打开一个之前的工程,然后新建一个一个.mm文件,暂时命名为BuyLink.mm
编写代码如下:
extern "C" void _BuyFullVersion()
{
NSString *str = @"http://itunes.apple.com/us/app/......";//itunes中得到要打开软件的绝对地址
//又坑爹呢,没发布呢,哪里有绝对地址。上边的的可以用于购买完整版,要对本游戏评级,就是说游戏没发布呢,可以采用下边的方法
/*虽然游戏没发布,但是在itunesconnect中新建一个App是必要的,发布游戏那些准备妥当之后,这个游戏App的详细信息下会有个Apple ID
NSString *str = @"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=XXX"];//XXX替换为你的 Apple ID
*/
[[UIApplicationsharedApplication] openURL:[NSURLURLWithString:str]];//以上两种链接都会默认跳转到itunes
}
功能有了,接下来的问题是如何使用。现在打开Unity3D的工程,添加相应按钮之类的触发点,这个是前奏。
然后在Unity3D中新建一个代码文件ItunesLink.cs,编写代码如下:
using UnityEngine;
using System.Collections;
using System.Runtime.InteropServices;//添加
public class ItunesLink {
public static void GoToItunes() { //这里不需要返回值,如果有需要的情况,与一般的C#方法一样
#if UNITY_IPHONE && !UNITY_EDITOR
_BuyFullVersion();//这个是我们在上边的文件里写的方法,下边是定义
#endif
Debug.Log("buy");
}
//此处定义你的扩展方法
[DllImport ("__Internal")]
private static extern void _BuyFullVersion();
}
然后这个C#方法就"大众化"了,在你刚才创建的按钮下,添加一句话即可
ItunesLink.GoToItunes();
嗯,差不多完工,看着像点样子了,不过还有一点要注意,在编译成Xcode工程之后,.mm文件要手动放进工程(Unity3.4,以后是否还需要,要看具体情况)。最后一点要注意的是,带插件的工程在模拟器里运行不了,必须上真机。
嗯,收工闪人,有问题欢迎来讨论。另,添加iAd和admob还可以只在build之后的Xcode工程里添加代码,下次再说吧