2026-04-22 계산대 프로토 타입

This commit is contained in:
2026-04-22 16:51:55 +09:00
parent 243284569c
commit 5321610b02
12 changed files with 90 additions and 22 deletions

Binary file not shown.

View File

@@ -1,16 +0,0 @@
using UnityEngine;
namespace VRShopping.Interact
{
public class CheckoutMachine : MonoBehaviour
{
private int _checkoutSum;
public int CheckoutSum => _checkoutSum;
public void AddCheckoutSum(int price)
{
_checkoutSum += price;
}
}
}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 41cd13da1f2c3254ba295b12e84e5f4b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -39,8 +39,7 @@ public void ScanArea()
//ItemInstance의 상품 정보를 스캔
public void ScanProduction(ItemInstance itemIns)
{
//AddCheckoutSum으로 총 계산금액에 더함
_checkoutMachine.AddCheckoutSum(itemIns.ItemDataInfo.FinalPrice);
_checkoutMachine.AddCheckoutProduction(itemIns.ItemDataInfo);
if (_scanVisualEffect != null) _scanVisualEffect.Play();
if (_scanSoundEffect != null) _scanSoundEffect.Play();

View File

@@ -0,0 +1,35 @@
using System.Collections.Generic;
using UnityEngine;
using VRShopping.Items;
using VRShopping.UI;
namespace VRShopping.Interact
{
public class CheckoutMachine : MonoBehaviour
{
public int CheckoutSum { get; private set; }
[SerializeField] private Transform _rowContainer;
[SerializeField] private CheckoutProductionRow _rowPrefab;
private readonly Dictionary<ItemData, CheckoutProductionRow> _rowByItem = new();
public void AddCheckoutProduction(ItemData itemData)
{
if (itemData == null) return;
if (_rowByItem.TryGetValue(itemData, out CheckoutProductionRow row))
{
row.Bind(itemData, row.Quantity + 1);
}
else
{
row = Instantiate(_rowPrefab, _rowContainer);
row.Bind(itemData, 1);
_rowByItem[itemData] = row;
}
CheckoutSum += itemData.FinalPrice;
}
}
}

View File

@@ -0,0 +1,30 @@
using TMPro;
using UnityEngine;
using VRShopping.Items;
namespace VRShopping.UI
{
public class CheckoutProductionRow : MonoBehaviour
{
[SerializeField] private TMP_Text _nameText;
[SerializeField] private TMP_Text _quantityText;
[SerializeField] private TMP_Text _priceText;
public int Quantity { get; private set; }
public void Bind(ItemData item, int quantity)
{
if (item == null)
{
gameObject.SetActive(false);
return;
}
Quantity = quantity;
if (_nameText != null) _nameText.text = item.DisplayName;
if (_quantityText != null) _quantityText.text = $"x{quantity}";
if (_priceText != null) _priceText.text = (item.FinalPrice * quantity).ToString();
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 92bbb02bca8248745bf81725ed4e0423

Binary file not shown.

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: cbc51e3dcec83df4bbbae3a93c76db6d
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant: