• SendMessage,BroadcastMessage


    三者比较

    image

    用于向某个GameObject发送一条信息,让它完成特定功能。
    其实本质是调用绑定GameObject里面的Script里面的函数,可以跨语言的,例如Javascript可以调用C#的函数,我已实验成功。
    ☆另外,如果GameObject本身有两个脚本,例如“move1”和“move2”,两个脚本内有同名函数例如“moveMe()”,会两个函数都执行一次。

    例子:

    广播消息

    void BroadcastMessage(string methodName, object parameter = null, SendMessageOptions options = SendMessageOptions.RequireReceiver);

    void BroadcastMessage(string methodName, SendMessageOptions options);

    向上发送消息

    void SendMessageUpwards(string methodName, SendMessageOptions options);

    void SendMessageUpwards(string methodName, object value = null, SendMessageOptions options = SendMessageOptions.RequireReceiver);

    发送消息

    void SendMessage(string methodName, object value = null, SendMessageOptions options = SendMessageOptions.RequireReceiver);

    void SendMessage(string methodName, SendMessageOptions options);

    SendMessageOptions

    SendMessageOptions.RequireReceiver //如果没有找到相应函数,会报错(默认是这个状态)

    SendMessageOptions.DontRequireReceiver //即使没有找到相应函数,也不会报错,自动忽略

    在这个游戏物体上的所有MonoBehaviour上调用名称为methodName的方法。

    接收消息的方法可以通过不要参数的方法来选择忽略参数。当选项被设置为SendMessageOptions.RequireReceiver时,如果消息没有被任何一个组件处理,则会打印一个错误。

    示例代码

    using UnityEngine;
    using System.Collections;
    
    public class ExampleClass : MonoBehaviour {
        void ApplyDamage(float damage) {
            print(damage);
        }
        void Example() {
            BroadcastMessage("ApplyDamage", 5.0F);
            SendMessageUpwards("ApplyDamage", 5.0F);
            SendMessage("ApplyDamage", 5.0F);
    
        }
    }

    文档资料

    Component是一切附加到游戏物体的基类,参见:http://game.ceeger.com/Script/Component/Component.html

  • 相关阅读:
    学习笔记25—python基本运算法则
    学习笔记24—win10环境下python版libsvm的安装
    学习笔记23—window10 64位 python2.7 安装liblinear
    学习笔记22—PS小技巧
    学习笔记21—PS换图片背景
    学习笔记20—MATLAB特殊函数
    学习笔记19—dpabi错误集
    学习笔记18—circos应用集
    system
    Python string
  • 原文地址:https://www.cnblogs.com/zhaoqingqing/p/3853186.html
走看看 - 开发者的网上家园