Unity チュートリアルのタワーディフェンステンプレートを触ってみる(29)では Tower ゲームオブジェクトに追加した、SlowAffector の解説を行った。今回は Tower ゲームオブジェクトに追加した、CurrencyAffector の解説を行っていく。
1.その他の効果、ビジュアライザー、挙動編 – CurrencyAffector.cs
CurrencyAffector.cs について稚拙ながら解説
「CurrencyAffector.cs」は「Assets/Scripts/TowerDefense/Affectors/CurrencyAffector.cs」の指しておりスクリプトについては以下の通り。内容としては通貨取得時のエフェクト実行を行っている。
[cce_csharp]using TowerDefense.Economy; using TowerDefense.Level; using UnityEngine; namespace TowerDefense.Affectors { /// <summary> /// A tower effect for generating currency /// </summary> public class CurrencyAffector : Affector { /// <summary> /// The controller for currency gain /// </summary> public CurrencyGainer currencyGainer; /// <summary> /// Format for displaying the the properties of this affector /// </summary> public string descriptionFormat = "<b>Produces</b> {1} at {2} units per second"; /// <summary> /// The audio source attached /// </summary> public AudioSource audioSource; /// <summary> /// The attached particle system /// </summary> public ParticleSystem currencyParticleSystem; /// <summary> /// Initialize the currency gain /// </summary> protected virtual void Start() { currencyGainer.Initialize(LevelManager.instance.currency); } /// <summary> /// Update the currency gain /// </summary> protected virtual void Update() { currencyGainer.Tick(Time.deltaTime); } /// <summary> /// Subscribe to currency gain events /// </summary> protected virtual void OnEnable() { currencyGainer.currencyChanged += OnCurrencyChanged; } /// <summary> /// Unsubscribe to currency gain event /// </summary> protected virtual void OnDisable() { currencyGainer.currencyChanged -= OnCurrencyChanged; } /// <summary> /// Fires when currency changed in <see cref="currencyGainer"/> /// </summary> /// <param name="info"> /// The info for the currency gainer /// </param> protected void OnCurrencyChanged(CurrencyChangeInfo info) { if (audioSource != null) { audioSource.Play(); } if (currencyParticleSystem != null) { currencyParticleSystem.Play(); } } } }[/cce_csharp]
36行目 : 「protected virtual void Start()」は Unity 固有の開始処理を行っている。内容としては CurrencyGainer の初期化を行っている。CurrencyGainer については登場した際に改て解説を行いたいと思う。
44行目 : 「protected virtual void Update()」は Unity 固有の更新処理を行っている。内容としては CurrencyGainer の Tick 処理を行っている。
52行目 : 「protected virtual void OnEnable()」は Unity 固有のゲームオブジェクトが有効となった時の処理を行っている。内容としては CurrencyGainer の currencyChanged に OnCurrencyChanged の設定を行っている。
60行目 : 「protected virtual void OnDisable()」は Unity 固有のゲームオブジェクトが無効となった時の処理を行っている。内容としては CurrencyGainer の currencyChanged から OnCurrencyChanged の削除を行っている。
71行目 : 「protected void OnCurrencyChanged(CurrencyChangeInfo info)」は通貨の取得音と ParticleSystem の実行を行っている。