3주차에 이어서 게임 개발을 진행했습니다.
저는 주식 기능을 맡았습니다.
주식 하나하나의 목록을 위한 prefab을 디자인했고, 실제 적용하는 과정은 팀원의 도움을 받아 만들었습니다.
using Unity.Android.Gradle.Manifest;
using UnityEngine;
using TMPro;
using System;
using Unity.Mathematics;
using UnityEngine.UIElements;
[System.Serializable]
public class Stock
{
// [SerializeField] [SerializeField] private GameManager gameManager;
// [SerializeField] [SerializeField] private GameManager buttonManager;
// [SerializeField] [SerializeField] private GameManager textManager;
[SerializeField] private string stockName;
[SerializeField] private int havingCount;
[SerializeField] private long cost;
[SerializeField] private double changeRate;
[SerializeField] private double prevChangeRate;
// public Stock(string name, int havingCount, long cost, double changeRate)
// {
// this.stockName = name;
// this.havingCount = havingCount;
// this.cost = cost;
// this.changeRate = changeRate;
// }
public Stock(string name, long cost)
{
this.stockName = name;
this.havingCount = 0;
this.cost = cost;
this.changeRate = 0;
this.prevChangeRate = 0;
}
public void UpdateStock(GameManager gm, int i)
{
var stockInfo = DataBase.AllStocks[i];
double[] stateRate = new double[] { stockInfo.Item3, stockInfo.Item5, stockInfo.Item7, stockInfo.Item9, stockInfo.Item11, stockInfo.Item13, stockInfo.Item15, stockInfo.Item17 };
double stateSum = 0;
stateSum += gm.GetStateValue("food") * stateRate[0];
stateSum += gm.GetStateValue("construction") * stateRate[1];
stateSum += gm.GetStateValue("medicine") * stateRate[2];
stateSum += gm.GetStateValue("energy") * stateRate[3];
stateSum += gm.GetStateValue("transit") * stateRate[4];
stateSum += gm.GetStateValue("it_ai") * stateRate[5];
stateSum += gm.GetStateValue("semiconductor") * stateRate[6];
stateSum += gm.GetStateValue("education") * stateRate[7];
changeRate = stateSum - 100;
changeRate = Math.Round(changeRate, 1);
//Debug.Log(changeRate);
if (changeRate != prevChangeRate)
{
Debug.Log("change O");
double realChangeRate = changeRate - prevChangeRate;
cost += (long)(realChangeRate * cost / 100);
prevChangeRate = changeRate;
changeRate = realChangeRate;
}
else
{
Debug.Log("Change X");
changeRate = 0.0;
}
//state가 이전과 달라졌을 때만 주식가격 변동되도록 수정하기..
}
public string GetStockName()
{
return stockName;
}
public long GetStockCost()
{
return cost;
}
public double GetStockChangeRate()
{
return changeRate;
}
public int GetStockHavingCount()
{
return havingCount;
}
public void Add()
{
havingCount++;
}
public bool Sub()
{
if (havingCount < 1) return false;
havingCount--;
return true;
}
}
/*
*/
아직 주식 가격 변동 기능은 구현하지 않았습니다.
주식의 가격은 저번주에 만든 뉴스로 인해 변동되는 분야 점수들에 영향을 받도록 설계할 예정입니다.