読者です 読者をやめる 読者になる 読者になる

スマゲ

スマートなゲームづくりを目指して日々精進

Unityでソーシャルゲームの体力回復処理を実装する

Unityでソーシャルゲームによくある体力回復機能の処理を実装してみます

■完成イメージ
f:id:sanukin39:20161123233801g:plain

■機能要件
・時間で体力を回復する
・体力を回復できる
・体力を使用することができる

■管理方法
・最後に体力を回復した時間を保持し、その時間との差分から次に回復する時間を算出する
・最後に体力を回復した時間と現在時刻の差分が1体力回復時間より大きければ体力を回復し、最後に体力を回復した時間を更新する

■管理用クラス全文

ソシャゲによくある体力管理機能のサンプル

■UI反映サンプル

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class ActionPointUIController : MonoBehaviour {

    [SerializeField]
    ActionPointManager apManager;
    [SerializeField]
    Text recoveryTimeLabel;
    [SerializeField]
    Text apStatusLabel;
    [SerializeField]
    Transform hpBar;

    void Start(){
        apManager.Init (20, 20, System.DateTime.Now);
        apManager.UseActionPoint (10);
    }

    void Update(){
        recoveryTimeLabel.text = apManager.GetRestRecoveryTimeLabel ();
        apStatusLabel.text = string.Format ("{0:00}/{1:00}", apManager.point, apManager.maxPoint);
        hpBar.localScale = new Vector3 (apManager.ActionPointRatio(), 1, 1);
    }

}

■この実装の注意点
現在時刻の取得をSystem.DateTime.Nowで行なっているため、端末の時間を操作することによって体力が回復してしまう。対処方法として体力データの管理、消費はサーバを介して行うようにし、この方法はあくまでUIの表示のみの用途で使用すること。もしくは、計算に使用する時刻の取得をサーバから行い、それを利用することが考えられる。