Unity 两种方式 一般都是组合使用
using System.Runtime.InteropServices;//引入
public class NewBehaviourScript : MonoBehaviour {
[DllImport("__Internal")]
private static extern void CallOC(); //该方法为oc 中mm文件方法名称
// Use this for initialization
void Start () {
CallOC (); //调用
}
// Update is called once per frame
void Update () {
}
}
#import
// 函数实现
#ifdef __cplusplus
extern "C" {
#endif
void CallOC()
{
NSLog(@"调用到了OC");
}
#ifdef __cplusplus
}
#endif
UIButton *but=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[but setImage:[UIImage imageNamed:@"button1.png"] forState:UIControlStateNormal];
[but setImage:[UIImage imageNamed:@"button2.png"] forState:UIControlStateHighlighted];
but.frame=CGRectMake(20, 20, 50, 60);
[self.view addSubview:but];
[but addTarget:self action:@selector(buttonCall) forControlEvents:UIControlEventEditingDidEnd];
//触发方法
-(void)buttonCall{
UnitySendMessage("Cube", "buttonCall", ""); //第一个参数 同时模型名称 2 该模型挂的脚本方法名称 3参数
}
using System.Collections;
public class NewBehaviourScript : MonoBehaviour {
void buttonCall () {
Debug.Log("OC buttonCall")
}
}