ใ
ใ
์ ๋ํฐ ๋ฒํผ ์นํ ๊ด๋ จ ์ง๋ฌธํ ์ ๋์.
์ปด๊ณต ํ๋ถ 1ํ๋ ์ฌํ ์ค์ธ๋ฐ, ์์ผ๋ ์ง๋ ์ง ์ผ๋ง ์ ๋์ด์ ์ผ๋ฅธ ๊ฒ์ ๋ง๋ค์ด์ ๊ด๊ณ ๋ถ์ด๊ณ ์ถ์ํ๊ณ ์ถ์ ๋ง์์ 2์๊ฐ ๋ง์ ํ๋กํ ํ์ ์ ๋ง๋ค์ด๋ดค์ด.
๊ทธ๋ฐ๋ฐ ๋ฌธ์ ๊ฐ ์๊ฒผ์ด.
1. ๋ฒํผ ์นํ ํ์์ด ์ฌ์ ํด. ์ ๊ณผ๋ ๊ทผ์ฒ๋ฅผ ๋๋ฅด๋ฉด ํด๋ฆญ์ด ์ผ์ ์๊ฐ (0.1์ด์ฏค?) ๋ง๋ค 1ํ์ฉ๋ง ํตํ๊ณ ๋๋จธ์ง๋ ์นํ.
2. ์ ๊ทธ๋ ์ด๋ ๋ฒํผ๋ ์์ชฝ์ ๋๋ฅด๋ฉด ์นํ๊ณ ์๋์ชฝ์ ๋๋ฅด๋ฉด ์ ๋๋ ค.
3. ์ด๊ฒ ์์ ์ ๋ง๋ค๋ ๊ฒ์์์ ์ ๊ทธ๋ฌ์.
4. ํ๋ฉด ์ ์ฒด(์ ๊ทธ๋ ์ด๋ ์ฐฝ ์ ์ธ)์ ๋ฒํผ์ ์ค์นํด์ ๊ทธ๋ฐ๊ฐ? ๋ผ๊ณ ์๊ฐํด์ ๋ฒํผ ํฌ๊ธฐ๋ฅผ ์ค์ฌ๋ด๋ ์์ฉ์์์.
5. ๋ฒํผ ์ปดํฌ๋ํธ์ navigation์ None์ผ๋ก ์ค์ ํด๋ ์์ฉ์์์.
6. ๋น์ฐํ ํ๋ฉด ์ ์ฒด์ ์ค์นํ ๋ฒํผ์ด ์ ์ผ ์์ผ๋ก ์ด.
์ด๊ฑฐ ์ฌ์ค ๊ฐ๋ฐ์ผ์ง ๊ฒธ ์ง๋ฌธ์ด์ผ... ๋ช ์์ด ํด๋ฆฌ์ปค ๊ฒ์์ธ๋ฐ ํด๋ฆญ์ด ์ ๋๋ฉด ์ฐ๋...ใ ใ ใ ใ
์คํฌ๋ฆฐ ๋ฒํผ ์ค์
์ ๊ทธ๋ ์ด๋ ๋ฒํผ ์ค์
์๋ ์คํฌ๋ฆฝํธ๋ ๊ฐ์ฅ ์ค์ํ ์คํฌ๋ฆฝํธ์ธ GameDirector์ ์คํฌ๋ฆฝํธ
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
//using UnityEngine.Experimental.UIElements;
public class GameDirector : MonoBehaviour
{
ย ย Canvas canvas;
ย ย public Image hpBarFill;
ย ย public GameObject damageText;
ย ย GameObject enemyHpText;
ย ย GameObject playerGoldText;
ย ย GameObject upgradeGoldText;
ย ย public double enemyHp;
ย ย public double maxEnemyHp;
ย ย public double tutorialDummyHp = 1;
ย ย public double playerAttack = 1;
ย ย public double playerGold = 0;
ย ย void Start()
ย ย {
ย ย ย ย canvas = GameObject.Find("Canvas").GetComponent<Canvas>();
ย ย ย ย enemyHpText = GameObject.Find("EnemyHp");
ย ย ย ย playerGoldText = GameObject.Find("PlayerGold");
ย ย ย ย upgradeGoldText = GameObject.Find("UpgradeGold");
ย ย ย ย LoadPlayer();
ย ย ย ย EnemyMake();
ย ย }
ย ย void Update()
ย ย {
ย ย ย ย hpBarFill.fillAmount = (float)(enemyHp / maxEnemyHp);
ย ย ย ย enemyHpText.GetComponent<Text>().text = enemyHp.ToString();
ย ย ย ย playerGoldText.GetComponent<Text>().text = playerGold.ToString() + " Gold";
ย ย ย ย upgradeGoldText.GetComponent<Text>().text = (playerAttack * (playerAttack + 1)).ToString() + " Gold";
ย ย ย ย ย
ย ย ย ย if (Input.GetKeyDown(KeyCode.Escape))
ย ย ย ย {
ย ย ย ย ย ย StartCoroutine(SavePlayer());
ย ย ย ย ย ย Application.Quit();
ย ย ย ย }
ย ย }
ย ย public void OnUpgradePressed()
ย ย {
ย ย ย ย if(playerGold >= (playerAttack * (playerAttack + 1)))
ย ย ย ย {
ย ย ย ย ย ย playerGold -= playerAttack * (playerAttack + 1);
ย ย ย ย ย ย playerAttack++;
ย ย ย ย }
ย ย }
ย ย public void OnScreenPressed()
ย ย {
ย ย ย ย enemyHp -= playerAttack;
ย ย ย ย GameObject instantiatedDamageText = Instantiate(damageText);
ย ย ย ย instantiatedDamageText.GetComponent<DamageTextDirector>().damage = playerAttack;
ย ย ย ย instantiatedDamageText.transform.SetParent(canvas.transform, false);
ย ย ย ย if (enemyHp <= 0)
ย ย ย ย {
ย ย ย ย ย ย tutorialDummyHp++;
ย ย ย ย ย ย EnemyMake();
ย ย ย ย ย ย if (maxEnemyHp < 100)
ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย playerGold++;
ย ย ย ย ย ย }
ย ย ย ย ย ย else
ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย playerGold += Math.Truncate(maxEnemyHp / 100);
ย ย ย ย ย ย }
ย ย ย ย }
ย ย ย ย StartCoroutine("SavePlayer");
ย ย }
ย ย void EnemyMake()
ย ย {
ย ย ย ย maxEnemyHp = tutorialDummyHp;
ย ย ย ย enemyHp = maxEnemyHp;
ย ย }
ย ย public IEnumerator SavePlayer()
ย ย {
ย ย ย ย SaveSystem.SavePlayer(this);
ย ย ย ย yield return null;
ย ย }
ย ย public void LoadPlayer()
ย ย {
ย ย ย ย SaveData data = SaveSystem.LoadPlayer();
ย ย ย ย playerGold = data.playerGold;
ย ย ย ย playerAttack = data.playerAttack;
ย ย ย ย tutorialDummyHp = data.tutorialDummyHp;
ย ย ย ย ย
ย ย }
}
์ง๋ฌธํ ๊ฑฐ๋ฉด ๋ฒํผ ์ค์ ์ด๋ ์คํฌ๋ฆฝํธ์ ๋๋ ์ฌ๋ฆฌ์...
์ฌ๋ ธ์ด๋ค
์คํฌ๋ฆฐ ๋ฒํผ์ fade duration ์๋ค
0์ผ๋ก ์์ ํ์์๋ ์ฌ์ ํฉ๋๋ค... ์ผ๋จ ๊ฐ์ฌํด์
ScreenPress์ ๊ฒ์์ค๋ธ์ ํธ๋ฅผ ์์ฑํ๊ณ ์์ฑ๋ ์ค๋ธ์ ํธ์ ์คํฌ๋ฆฝํธ์ ์ฐพ์๋ด๋ ์ฒ๋ฆฌ์๋๊ฐ ๋๋ฌด ๋๋ ค์ ๋ค๋ฅธ ์ฝ๋๊ฐ ๋ค๋ฐ๋ผ์ก์ง ๋ชปํ๋ ๊ฒ ๊ฐ๋ค
๊ทธ๋ฐ๋ฐ ์ด๊ฒ ๋น ๊ณต๊ฐ์ ๋๋ฅผ ๋๋ ๋ฉ์ฉกํด์
๋ฒํผ์ด ์ด์ํ๊ฒ ์นํ๋ค๋ฉด event System ์ดํด๋ด
๋ญ ์๋ฅผ ๋ค์ด ์ฒดํฌ๋ฐ์ค ์ฌ๋ฌ๊ฐ ๋๋ฅธ๋ค๋๊ฐ event system์ ์ญ์ ํ๊ณ ๋ค์ ์์ฑํ๋๊ฐ
EventSystem์ ๋ค์ ์์ฑํด๋ ์์ฉ์ด ์์์ต๋๋ค.
๋ค๋ง ์ ๊ทธ๋ ์ด๋ ๋ฒํผ์ด ์นํ๋ ๋ฌธ์ ๋ ๊ทธ ์์ ์๋ ๊ธ์์ Raycast Target์ ํด์ ํ๋ ๊ธ์์ ๋ฒ์๋งํผ ์ ๋๋ ธ๋ ๊ฒ ์ฌ๋ผ์ก๋ค์...! ์คํฌ๋ฆฐ ํฐ์น๊ฐ ์นํ๋ ๊ฑด ์ฌ์ ํฉ๋๋ค...
๋๋ฏธ์ง ๊ธ์์ ๊ทธ ๋ฑ๋ฑ ์คํ๋ผ์ดํธ์ Raycast๋ฅผ ํด์ ํ๊ณ ๋ฒํผ ์ด๋ฏธ์ง๋ฅผ Sliced์์ Simple๋ก ๋ฐ๊พธ๋ (์๊ด ์๋ ์ง๋ ๋ชจ๋ฅด๊ฒ ์) ํด๊ฒฐ๋์์ต๋๋ค!
์ค ใ ใ ์ฐธ๊ณ ๋ก ์ฌ๊ธฐ๊ฐค์ ์ง๋ฌธ ๋ฌป๋ ๊ฑฐ ๋ณด๋ค ์์ด๋ก ๋ ๋ฌธ์ ๋ฅผ ๊ตฌ๊ธ๋ง ํ๋๊ฒ ๋ ๋น ๋ฆ