準備工作
我們可以用Xcode創(chuàng)建個項目將一個.h,.m文件拷貝到Unity的指定路徑
項目-->Assets-->Plugins-->iOS就ok了
1:oc代碼向unity傳值?
首先在.h文件里聲明一下方法,這里參數(shù)可以更改惊科,但名字不要改(這里要在@end后寫)
extern void UnitySendMessage(const char *,const char *,const char *);
然后就可以在.m文件里調(diào)用了
UnitySendMessage("A","B","C");
A:unity腳本掛載的gameobject(我們項目常有一個MainCamera或衡,因此我用的都是用這一個砚殿,防止以后交互多了混亂)
B:方法名(這里我的理解是在A物體上掛的腳本里面寫方法)
C:這個就是我們的參數(shù)了(因為之前定義的是const char *韧献,所以參數(shù)形式為“1”這樣的几晤,不要@“1”這樣寫)也切,因為傳到Uunity里會因為類型的問題出錯
到這里等程序調(diào)用到方法的時候就發(fā)到unity里了只壳,那在unity里面怎么接受呢
相當簡單,就是寫個B方法就ok了极景,當然當unity腳本中的方法為靜態(tài)方法時察净,這個方法無效驾茴,所以只能調(diào)用非靜態(tài)的方法
2:unity想ios發(fā)消息
首先還是需要在oc代碼里寫好方法
首先.h(這里要在@end后寫)
?extern "C"
{
void GetProDuctId(const char * ProductId);
void GetURL(const char * Url,const char * PlayerId);
}
其次.m文件
方法的位置和我們平常寫的不太一樣(要在#import之后,@interface之前)(這個我也沒弄清楚氢卡。锈至。。我自己試著是可以的)
那么在unity腳本里怎么發(fā)消息呢
首先導入頭文件
usingSystem.Runtime.InteropServices;
然后有一個固定寫法译秦,這里我貼一下代碼 這里就相當于聲明(個人理解)
public class BanShopMoneyGUI:BaseUI
{
#ifUNITY_IPHONE
[DllImport("__Internal")]
private static extern void GetProDuctId(stringID);
[DllImport("__Internal")]
private static extern void GetURL(stringURL,stringID);
#endif
}
然后再代碼里調(diào)用
#ifUNITY_EDITOR
#elifUNITY_IPHONE
GetProDuctId?(“A”);
GetURL(“B”,C);
#endif
到這里就ok了