通过查阅资料,看到unity3d的通信有以下几种方式:
1.利用在脚本A中定义对外接口函数,然后在脚本B中找到A所在的对象,再找到脚本A,进而调用里面的对外接口函数,这个方法在我的《unity3D NGUI中button响应事件实现》这篇文章中有仔细说明,可以参考。
2.还有一个是利用SendMessage的方法来实现脚本互相通信。
首先在A脚本中编写对外接口函数,如下所示:
using UnityEngine;
using System.Collections;
public class A : MonoBehaviour {
public void Show_nunber(int n)
{
print("num: " + n );
}
}
然后在脚本B中利用SendMessage机制调用脚本A里面的Show_number函数。如下:
using UnityEngine;
using System.Collections;
public class B : MonoBehaviour {
public GameObject Obj;//A脚本绑定在一个物体上的时候,再把脚本B拖拽到这个GameObject
void Start ()
{
Obj.SendMessage("Show_number","10");//相当于调用脚本B里面的函数,第一个参数是函数名,第二个传递的整型参数
}
这样就可以实现两个不同对象上的脚本相互通信了。
以上引用于博客:
但是我后来发现,我在最开始想要实现的通信,并不是这种“复杂”的传递参数。有一种更简单的方法,直接调用public类的函数就可以了。
比如,有一个串口通信类
public class SerialPortReciever : MonoBehaviour{}
在另一个类中直接实例化一个对象
public class Anima_Control : MonoBehaviour {
public SerialPortReciever Obj;//
……
if (Obj.R1 == 2)
{
animation["first"].speed = 1f;
animation.Play("first");
……
}
}
其实通信没有那么复杂。