public static void RenderConnection(MonoBehaviour caster, UnityEvent ev) { Color gizmosColor = Gizmos.color; for (int i = 0, len = ev.GetPersistentEventCount(); i < len; i++) { Event target = ev.GetPersistentTarget(i) as Event; if (target) { string method = ev.GetPersistentMethodName(i); if (method == "StartEvent") Gizmos.color = Color.green; else if (method == "set_enabled") Gizmos.color = Color.blue; else return; Gizmos.DrawLine(caster.transform.position, target.transform.position); } } Gizmos.color = gizmosColor; }
void Update() { _timer += Time.deltaTime; switch (_status) { case GunEnemyStatus.Idle: // 時間が経ったら Idle -> Ready に移行する if (_timer > _interval) { ResetTimer(); _status = GunEnemyStatus.Ready; _animator.SetTrigger("Ready"); _collider.enabled = true; } break; case GunEnemyStatus.Ready: // 時間が経ったら発砲し、Idle 状態に移行する if (_timer > _fireTime) { ResetTimer(); _status = GunEnemyStatus.Idle; _animator.SetTrigger("Fire"); _collider.enabled = false; if (_onShoot.GetPersistentEventCount() > 0) { _onShoot.Invoke(); } else { Debug.LogWarning("発砲時に呼ばれる処理が指定されていません。"); } } break; } }
void Update() { m_timer += Time.deltaTime; switch (m_status) { case GunEnemyStatus.Idle: if (m_timer > m_interval) { ResetTimer(); m_status = GunEnemyStatus.Ready; m_animator.SetTrigger("Ready"); m_collider.enabled = true; } break; case GunEnemyStatus.Ready: if (m_timer > m_fireTime) { ResetTimer(); m_status = GunEnemyStatus.Idle; m_animator.SetTrigger("Fire"); m_collider.enabled = false; if (m_onShoot.GetPersistentEventCount() > 0) { m_onShoot.Invoke(); } else { Debug.LogWarning("発砲時に呼ばれる処理が指定されていません。"); } } break; } }