+
*
+
ココ先生
ゲーム開発の案内役
この記事では ショップ価格と強化コスト を、読んで終わりにせず、ShopPricingDemo の小さな実装イメージまでつなげて案内します。
+
*
+
はじめちゃん
ゲームエンジン学習中
ショップ価格と強化コスト設計の基本 を読む前に、まずUnity のどこを見ればよいかを確認したいです。
今日は「ショップ価格と強化コスト」を、まず何が変わるのか、次に画面で何を見せるのか、最後にどの値を確認するのか、という順番で読んでいきます。
大きなテーマに見えますが、今日は「ShopPricingDemo」という小さな練習用の場面だけを作るのですね。何から始めればよいか分かりました。
価格を見るを表示、Buy Buttonで進める、所持金と比べるを確認の流れを追えば、記事の内容を自分のプロジェクトへ移しやすくなります。

完成イメージ
ショップ価格と強化コストの状態を分ける
価格を見る、所持金と比べる、購入後を更新 を別々の状態として扱い、今どの段階かを画面で確認できるようにします。
買えるか、強化できるかをUIで伝える
Console だけではプレイヤーには見えません。TextMeshPro や Slider に coinCount / itemPrice / upgradeCost を出して、判断材料を画面へ移します。
最小実装から広げる
まず ShopPricingDemo を動かし、その後に本物の入力、通信、戦闘、保存処理などへ置き換えると、原因を見失いにくくなります。
導入
所持金と価格を比べ、買える品だけ購入できるようにします。レジでお金が足りるか確認する画面です。
作るもの
Canvas に goldText、priceText、buyButton を置きます。ShopPurchase に初期ゴールドと価格を入れます。
買えるかを更新する
[SerializeField] private Button buyButton; // 購入ボタン
void Refresh(){ goldText.text=$"所持金 {gold}"; priceText.text=$"価格 {price}"; buyButton.interactable=gold>=price; }
購入後にお金を引く
public void Buy(){ if(gold<price)return; gold-=price; owned++; Refresh(); }
完成版
using UnityEngine;using UnityEngine.UI;using TMPro;public class ShopPurchase:MonoBehaviour{[SerializeField]TMP_Text goldText,priceText;[SerializeField]Button buyButton;[SerializeField]int price=30;int gold=100,owned;void Start(){Refresh();}public void Buy(){if(gold<price)return;gold-=price;owned++;Refresh();}void Refresh(){goldText.text=$"所持金 {gold}";priceText.text=$"価格 {price}";buyButton.interactable=gold>=price;}}
最後に整理すると、ショップ価格と強化コストでいちばん見失いやすい所はどこですか?
内部処理だけを追って、画面で伝える言葉を後回しにする所です。ShopPricingDemoでは、まずプレイヤーに見える変化を先に決めます。
流れは「価格を見るを表示」から始めて、「Buy Buttonで進める」で操作を入れる、と覚えればよいですか?
その通りです。その後に「所持金と比べるを確認」で途中状態を見て、「購入後を更新で結果を見る」で結果を確認します。順番を固定すると、失敗した場所も見つけやすくなります。
つまり、いきなり完成システムにせず、状態名、表示、値の変化を小さくそろえるのですね。
はい。最後は「ショップ価格と強化コストをわかりやすく考える」の考え方で、難しい処理をプレイヤーに伝わる短い合図へ置き換えられるか確認しましょう。
この記事のまとめ
お金が余りすぎたり足りなすぎたりしないように、価格差、序盤の買い物優先度、強化費用の伸ばし方を整理します。
大きな違いを生むのは、派手な性能よりも 毎日触れる環境を無理なく整えること です。見やすい画面と使いやすい道具がそろうと、学習や次の一歩を決めやすくなります。