본문 바로가기
개발/C#

유니티 C# 방치형 클릭커 게임 예시 간단 구현하기

by SPNK 2024. 2. 28.
반응형

코드 작성

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

public class ClickerGame : MonoBehaviour
{
    // UI 요소들을 연결할 변수들
    public Text scoreText;        // 점수를 표시하는 텍스트
    public Text perSecondText;    // 초당 점수 표시 텍스트
    public Button clickButton;    // 클릭 버튼
    public Button upgradeButton;  // 업그레이드 버튼

    // 게임에서 사용할 변수들
    private int score = 0;                // 현재 점수
    private int clickPower = 1;           // 클릭 당 점수
    private int upgradeCost = 10;         // 업그레이드 비용
    private int upgradePower = 2;         // 업그레이드로 얻는 클릭 파워 증가량
    private float perSecond = 0.0f;       // 초당 생산되는 점수

    void Start()
    {
        // 버튼 클릭 시 실행할 함수들을 설정
        clickButton.onClick.AddListener(OnClick);
        upgradeButton.onClick.AddListener(UpgradeClickPower);
        
        // 초당 점수 증가 코루틴 실행
        StartCoroutine(PerSecondProduction());
    }

    void UpdateUI()
    {
        // UI 텍스트 업데이트
        scoreText.text = "점수: " + score;
        perSecondText.text = "초당 점수: " + perSecond.ToString("F1");
        
        // 업그레이드 버튼 활성화 여부 업데이트
        upgradeButton.interactable = score >= upgradeCost;
    }

    void OnClick()
    {
        // 클릭 시 실행되는 함수
        score += clickPower;
        UpdateUI();
    }

    void UpgradeClickPower()
    {
        // 업그레이드 버튼 클릭 시 실행되는 함수
        if (score >= upgradeCost)
        {
            score -= upgradeCost;
            clickPower *= upgradePower;
            upgradeCost *= 2;
            UpdateUI();
        }
    }

    IEnumerator PerSecondProduction()
    {
        // 초당 점수 생산 코루틴
        while (true)
        {
            yield return new WaitForSeconds(1.0f);
            score += (int)perSecond;
            UpdateUI();
        }
    }
}
반응형

댓글