【 unity3d 】SendMessage的使用方法

前言

SendMessage(): 不考虑脚本对象,可以直接来调用某个脚本类的方法
但是消耗大,因为要先找物体,然后挨个挨个找调用的脚本方法

使用测试

创建一个空物体,里面拖入两个脚本sendA,SendB
1

脚本代码

using UnityEngine;
using System.Collections;

public class SendA : MonoBehaviour {

    void Update(){
        if (Input.GetMouseButtonDown (0)) {
            SendMessage ("ToSend", "AK");
        }
    }
    public void ToSend(string name) {
        Debug.Log ("SendA Script Func");
        Debug.Log (name);
    }
}

public class SendB : MonoBehaviour {

    public void ToSend(string name) {
        Debug.Log ("SendB Script Func");
        Debug.Log (name);
    }
}

此时鼠标左击游戏场景,此时不管脚本,两个脚本包含这个ToSend()的方法都被调用了,
但是是在同一个物体上的脚本方法会被调用到,即限制在同一个物体上的脚本方法

这里写图片描述

扩展

  • 向上传递方法 SendMessageUpwards(“xxx”)
    可以触发父物体脚本xxx方法,当前物体其他脚本xxx方法也可以触发

  • 向下传播方法 BroadcastMessage(“xxx”)
    可以触发子物体和当前物体脚本中的xxx方法

猜你喜欢

转载自blog.csdn.net/liaoshengg/article/details/80984998