I am a bit confused about the SendMessages a bit. So I created a little example mock up level to learn about it and mess with it a bit more. I am using C# to write these scripts and I am a bit lost. I have two objects. One is the player who has a flashlight attached to him (The Light holds the script to turn the light on and off) and there is a collection trigger in front of him. I made it work so if the player hits the trigger it will send a message to the light to turn it off for a given amount of time. Here are my two scripts.
Trigger.cs:
using UnityEngine;
using System.Collections;
public class Trigger : MonoBehaviour {
void OnTriggerEnter(Collider col){
if(col.gameObject.tag == "Player"){
gameObject.Find("Light").SendMessage("blinkingDelay", 5.0f);
}
}
}
And here is the flashlight.
Flashlight.cs
using UnityEngine;
using System.Collections;
public class Flashlight : MonoBehaviour {
public bool power = true;
// Update is called once per frame
public IEnumerator blinkingDelay(float holdamount){
power = false;
yield return new WaitForSeconds(holdamount);
power = true;
}
}
Now I know in order to use yield I have to call the function with: StartCoroutine. But How do I do this with SendMessage?
The error I get btw is this: “sendmessage blinkingDelay has no receiver”