void TestReceiveMySendMessageReturnGameObject(MyMessageArgs myMessageArgs) { Debug.Log("TestReceiveMySendMessageReturnGameObject : Parameter1: " + myMessageArgs.Parameter1); Debug.Log("TestReceiveMySendMessageReturnGameObject : Parameter2: " + myMessageArgs.Parameter2); myMessageArgs.ReturnParameter = Camera.main.gameObject; Debug.Log("TestReceiveMySendMessageReturnGameObject : Setting ReturnParameter to Gameobject : " + ((GameObject)myMessageArgs.ReturnParameter).name); }
void TestReceiveMySendMessageReturnFloat(MyMessageArgs myMessageArgs) { Debug.Log("TestReceiveMySendMessageReturnFloat : Parameter1: " + myMessageArgs.Parameter1); Debug.Log("TestReceiveMySendMessageReturnFloat : Parameter2: " + myMessageArgs.Parameter2); float a = (float)myMessageArgs.Parameter1; float b = (float)myMessageArgs.Parameter2; myMessageArgs.ReturnParameter = a + b; Debug.Log("TestReceiveMySendMessageReturnFloat : Setting ReturnParameter to Float : " + myMessageArgs.ReturnParameter); }
void DoSendMessage() { var go = Fsm.GetOwnerDefaultTarget(gameObject); if (go == null) { return; } MyMessageArgs myMessageArgs = new MyMessageArgs(); myMessageArgs.Parameter1 = Parameter1.GetValue(); myMessageArgs.Parameter2 = Parameter2.GetValue(); switch (delivery) { case MessageType.SendMessage: go.SendMessage(MethodName, myMessageArgs, options); if (myMessageArgs.ReturnParameter != null) { // NOTE: the client Script Method must set myMessageArgs.ReturnParameter to the correct type PlayMakerUtils.ApplyValueToFsmVar(this.Fsm, ReturnParameter, myMessageArgs.ReturnParameter); } return; case MessageType.SendMessageUpwards: go.SendMessageUpwards(MethodName, myMessageArgs, options); // No Return Parameters as Multiple Receivers return; case MessageType.BroadcastMessage: go.BroadcastMessage(MethodName, myMessageArgs, options); // No Return Parameters as Multiple Receivers return; } Finish(); }