短編RPG制作(Unity2D)【第65回】装備その8
装備
購入機能の作成
まず、装備のステータスを反映させる処理を書きました。
装備が変更されるとそれを検知して攻撃力を更新します。
(まだ動かしてないので正しいかどうかわからない……)
private void Update()
{
// 装備を変更した際にステータスに反映する
if (currentWeapon != equipedWeapon)
{
if (equipedWeapon == null)
{
attack = baseAttack + forceAttackLv;
}
float coefficient = (100.0f + (float)equipedWeapon.GetStatus()) / 100.0f;
Debug.Log(coefficient);
attack = (int)((baseAttack + forceAttackLv) * coefficient);
}
}
そして、一度購入したらボタンの機能が変更するように実装します。
これはEnum型を使って条件分岐することで、簡単に実装できました。
public void OnClickBuyButton()
{
// 購入処理
if ( value <= PlayerParameter.gold && _state == StateEnum.unpurchased )
{
_state = StateEnum.purchased;
_text.text = "装備する";
PlayerParameter.gold -= value;
}
// 装備処理
if (_state == StateEnum.purchased)
{
_state = StateEnum.equiped;
_text.text = "外す";
onEquip.Invoke();
// 他に装備している武器があったら、そのボタンを「装備する」に戻す必要あり
}
}
「onEquip」をコールバック関数にして処理を実装したいと考えています。(ボタン操作を排他的にするには都合が良さそうなので)
しかし、今回はどのボタンを押したか伝達する必要があり、関数に引数としてボタンのID番号を渡す必要があります。
以前実装したコールバック関数の型では引数を使えないようなので、「デリゲート」と呼ばれるものを勉強する必要がありそうです。
そういうわけで、明日はデリゲートを勉強したいと思います。
この記事が気に入ったらサポートをしてみませんか?