Есть следующий код, обратите внимание на метод SetAlive в конце который:
public class WanderingAI : MonoBehaviour {
public float speed = 3.0f;
public float obstacleRange = 5.0f;
private bool _alive;
// Use this for initialization
void Start () {
_alive = true;
}
// Update is called once per frame
void Update () {
if (_alive)
{
transform.Translate(0, 0, speed * Time.deltaTime);
Ray ray = new Ray(transform.position, transform.forward);
RaycastHit hit;
if (Physics.SphereCast(ray, 0.75f, out hit))
{
if (hit.distance < obstacleRange)
{
float angle = Random.Range(-110, 110);
transform.Rotate(0, angle, 0);
}
}
}
}
public void SetAlive(bool alive)
{
_alive = alive;
}
}
И есть скрипт
public class ReactiveTarget : MonoBehaviour {
public void ReactToHit()
{
WanderingAI behavior = GetComponent<WanderingAI>();
if(behavior != null)
{
behavior.SetAlive(false);
}
StartCoroutine(Die());
}
Я правильно понимаю, что во втором скрипте мы создаем объект класса из первого скрипта, и затем в этой строке behavior.SetAlive(false) мы изменяем значение переменной _alive из первого скрипта?