unity c# SendMessage

unity c#调用的访问级别
.(“函数名”, 参数,);
参数
函数名:你所调用函数的名字(不能打错)
参数:在发送信息的时候可以添加参数发送过去,因为调用的函数有参数,所以你也要传参 。当人,若调用函数无参,可直接省略 。
:只要有两两点 。
作用
是一个游戏物体的一个api,作用是发送信息从而调用你想调用的函数 。主要是在别的脚本中调用另一个脚本中的方法 。但是首先获得带有该方法脚本的物体 。
例子:
我创建的场景有些问题,在2d项目中创建两个 。但是没什么问题,大家理解就好 。
接下来分别为cube1和cube2添加脚本 。
添加到Cube1,添加到Cube2;
代码如下:
public class cube1Send : MonoBehaviour{private GameObject receiveCube;void Start(){receiveCube = GameObject.Find("Cube2");}void OnMouseDown(){if (this.gameObject){string str = "Cube1被点击了";receiveCube.SendMessage("GetMessage",str);}}}
代码如下:
public class Cube2Get : MonoBehaviour{void GetMessage(string n){Debug.Log("接收信息:" +n);}}
运行Unity,当点击Cube1会发生:
上述代码中只有获取到调用函数的Cube2才可以调用,这是首要条件 。
若是不获取,直接用自身Cube1能不能发送信息调用发放呢?
这是用自身调用来调用别的物体的脚方法:
这样就会进行报错,不可这样来调试 。
没有参数会怎么样?
发送信息传参,但是调用的函数无参会怎样?
这样也会报错,没有相应接收者,所以调用函数传不传参,传什么样的参数应该和调用函数参数一致 。
.
默认是.,上述例子都是那个样子,所以就不用再阐述一二,因为当有问题的时候会直接给你报错 。
【unity c# SendMessage】当用.时:
的依旧无参 。
当点击Cube1时会发现依旧可以运行不报错,并且可以调用函数 。
当函数参数是int类型时运行:
参数不一致但是会进行报错,说参数不匹配 。
当函数时重载:
这样的话就会自动匹配相应的函数方法,不会调用int的 。
调用的访问级别
不知道大家有没有仔细发掘我调用的函数访问权限 。
我写的都是 权限的,而不是,所以,调用函数方法可以调用任意权限的函数方法!!