見出し画像

RAYSER進捗(20230928)


タイトル画面へのScoreを追加

ゲームの繰り返し要素の一環でScoreを継続できるようにしようとしています。Scoreはゲーム中に獲得するものですが、獲得したScoreの値に応じて、何らかの形で自機のパワーアップなどができるものと交換するなどの仕組みで利用しようと考えています。
VContainerを最近使いだしたので、新たにScore処理を書き直しています。ただPresenterの部分をどう処理するか現在まだ悩んでいて、決めかねています。(一旦MessageBroker.Default.Receiveを使う方法にしていますが、MonoBehaviourでないとAddto(this)を指定できないので、他の方法の方がよいかなと模索しています。)

namespace Score
{
    /// <summary>
    /// スコア管理クラス
    /// </summary>
    public class ScoreData
    {
        private int Score { get; set; }
        public int GetScore()
        {
            return Score;
        }

        public void SetScore(int score)
        {
            Score = score;
        }
    }
}
namespace Score
{
    /// <summary>
    /// スコア管理クラス
    /// </summary>
    public class ScoreData
    {
        private int Score { get; set; }
        public int GetScore()
        {
            return Score;
        }

        public void SetScore(int score)
        {
            Score = score;
        }
    }
}
using Event.Signal;
using UniRx;
using VContainer.Unity;

namespace Score
{
    public class ScoreDataPresenter : IStartable
    {
        readonly ScoreService scoreService;
        readonly ScoreData scoreData;

        public ScoreDataPresenter(ScoreService scoreService, ScoreData scoreData)
        {
            this.scoreService = scoreService;
            this.scoreData = scoreData;
        }

        void IStartable.Start()
        {
            MessageBroker.Default.Receive<ScoreAccumulation>()
                .Subscribe(x => this.scoreService.AddScore(x.Score))
                // .Subscribe(x => SaveScore())
                // .AddTo(scoreData)
                ;
        }
    }
}
using TMPro;
using UnityEngine;

namespace Score
{
    public class ScoreScreen : MonoBehaviour
    {
        private TextMeshProUGUI scoreUI;
    }
}

この記事が気に入ったらサポートをしてみませんか?