官术网_书友最值得收藏!

Implementing custom messages

We've created the Messaging System, but an example of how to use it would help us wrap our heads around the concept. Let's start by defining a pair of simple classes that derive from Message, which we can use to create a new enemy, as well as notify other parts of our codebase that an enemy was created:

public class CreateEnemyMessage : Message {}

public class EnemyCreatedMessage : Message {

public readonly GameObject enemyObject;
public readonly string enemyName;

public EnemyCreatedMessage(GameObject enemyObject, string enemyName) {
this.enemyObject = enemyObject;
this.enemyName = enemyName;
}
}

CreateEnemyMessage is the simplest form of message that contains no special data, while EnemyCreatedMessage will contain a reference to the enemy's GameObject as well as its name. Good practice for message objects is to make their member variables not only public, but also readonly. This ensures that the data is easily accessible but cannot be changed after the object's construction. This safeguards the content of our messages against being altered, as they're passed between one listener and another.

主站蜘蛛池模板: 新和县| 武陟县| 大同县| 凤冈县| 道孚县| 木里| 嵊泗县| 磐安县| 巴彦淖尔市| 石屏县| 临城县| 昭通市| 永兴县| 赣州市| 宝山区| 柯坪县| 剑阁县| 白玉县| 贵溪市| 汉源县| 灵台县| 青神县| 石台县| 台湾省| 长泰县| 文安县| 志丹县| 新化县| 龙游县| 城口县| 宝山区| 泸定县| 贵德县| 沧州市| 竹北市| 沭阳县| 蒲江县| 沙坪坝区| 凤山市| 嘉定区| 福建省|