Initial commit: Star of Words Unity project
Snapshot of the existing Unity 6 language-learning word game before any refactoring. Adds Unity .gitignore and .gitattributes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
commit
ecb1c9edea
1455 changed files with 933295 additions and 0 deletions
177
Assets/Scripts/3.0/Mod6/Mod6Resume.cs
Normal file
177
Assets/Scripts/3.0/Mod6/Mod6Resume.cs
Normal file
|
|
@ -0,0 +1,177 @@
|
|||
using System.Collections;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class Mod6Resume : MonoBehaviour
|
||||
{
|
||||
[Header("UI TEXTS")]
|
||||
public TMP_Text scoreText; // Toplam skor
|
||||
public TMP_Text maxScoreText; // En yüksek skor
|
||||
public TMP_Text correctText; // Doğru sayısı
|
||||
public TMP_Text wrongText; // Yanlış sayısı
|
||||
|
||||
[Header("BUTTONS")]
|
||||
public Button retryButton;
|
||||
public Button exitButton;
|
||||
|
||||
[Header("AUDIO")]
|
||||
public AudioSource sfx;
|
||||
public AudioClip clickSound;
|
||||
|
||||
[Header("━━━ ANIMATION SETTINGS ━━━━━━━━━━━━━━━━━")]
|
||||
public float countUpDuration = 0.8f;
|
||||
public float popInDelay = 0.08f;
|
||||
public float popInTime = 0.3f;
|
||||
|
||||
// Mod6 PlayerPrefs Key
|
||||
private string modKey = "Mod6";
|
||||
|
||||
private int score;
|
||||
private int maxScore;
|
||||
private int correct;
|
||||
private int wrong;
|
||||
|
||||
// ============================================================
|
||||
void Start()
|
||||
{
|
||||
LoadResults();
|
||||
PrepareTexts();
|
||||
|
||||
// Retry
|
||||
if (retryButton != null)
|
||||
retryButton.onClick.AddListener(() =>
|
||||
{
|
||||
PlaySFX();
|
||||
Retry();
|
||||
});
|
||||
|
||||
// Exit
|
||||
if (exitButton != null)
|
||||
exitButton.onClick.AddListener(() =>
|
||||
{
|
||||
PlaySFX();
|
||||
ExitToMenu();
|
||||
});
|
||||
|
||||
StartCoroutine(PlayRevealSequence());
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
void LoadResults()
|
||||
{
|
||||
score = PlayerPrefs.GetInt(modKey + "_LastScore", 0);
|
||||
maxScore = PlayerPrefs.GetInt(modKey + "_MaxScore", 0);
|
||||
correct = PlayerPrefs.GetInt(modKey + "_Correct", 0);
|
||||
wrong = PlayerPrefs.GetInt(modKey + "_Wrong", 0);
|
||||
|
||||
Debug.Log($"[MOD6 RESULT] Score={score} | Max={maxScore} | Correct={correct} | Wrong={wrong}");
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
void PrepareTexts()
|
||||
{
|
||||
SetTextZero(scoreText);
|
||||
SetTextZero(maxScoreText);
|
||||
SetTextZero(correctText);
|
||||
SetTextZero(wrongText);
|
||||
}
|
||||
|
||||
void SetTextZero(TMP_Text txt)
|
||||
{
|
||||
if (txt == null) return;
|
||||
|
||||
txt.text = "0";
|
||||
txt.transform.localScale = Vector3.zero;
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
IEnumerator PlayRevealSequence()
|
||||
{
|
||||
yield return StartCoroutine(RevealStat(scoreText, score));
|
||||
yield return new WaitForSeconds(popInDelay);
|
||||
|
||||
yield return StartCoroutine(RevealStat(maxScoreText, maxScore));
|
||||
yield return new WaitForSeconds(popInDelay);
|
||||
|
||||
yield return StartCoroutine(RevealStat(correctText, correct));
|
||||
yield return new WaitForSeconds(popInDelay);
|
||||
|
||||
yield return StartCoroutine(RevealStat(wrongText, wrong));
|
||||
}
|
||||
|
||||
IEnumerator RevealStat(TMP_Text txt, int targetValue)
|
||||
{
|
||||
if (txt == null) yield break;
|
||||
|
||||
// pop-in scale
|
||||
Vector3 normal = Vector3.one;
|
||||
float t = 0f;
|
||||
|
||||
while (t < 1f)
|
||||
{
|
||||
t += Time.deltaTime / Mathf.Max(0.01f, popInTime);
|
||||
txt.transform.localScale = Vector3.Lerp(Vector3.zero, normal, EaseOutBack(t));
|
||||
|
||||
if (targetValue == 0)
|
||||
txt.text = "0";
|
||||
|
||||
yield return null;
|
||||
}
|
||||
|
||||
txt.transform.localScale = normal;
|
||||
|
||||
// count-up
|
||||
if (targetValue > 0)
|
||||
{
|
||||
float ct = 0f;
|
||||
|
||||
while (ct < 1f)
|
||||
{
|
||||
ct += Time.deltaTime / Mathf.Max(0.01f, countUpDuration);
|
||||
int shown = Mathf.RoundToInt(Mathf.Lerp(0, targetValue, EaseOutQuad(ct)));
|
||||
txt.text = shown.ToString();
|
||||
yield return null;
|
||||
}
|
||||
}
|
||||
|
||||
txt.text = targetValue.ToString();
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
void PlaySFX()
|
||||
{
|
||||
if (sfx && clickSound)
|
||||
sfx.PlayOneShot(clickSound);
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
void Retry()
|
||||
{
|
||||
SceneManager.LoadScene("Mod6");
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
void ExitToMenu()
|
||||
{
|
||||
SceneManager.LoadScene("Anamen");
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
float EaseOutBack(float t)
|
||||
{
|
||||
t = Mathf.Clamp01(t);
|
||||
|
||||
float c1 = 1.70158f;
|
||||
float c3 = c1 + 1f;
|
||||
|
||||
return 1f + c3 * Mathf.Pow(t - 1f, 3f) + c1 * Mathf.Pow(t - 1f, 2f);
|
||||
}
|
||||
|
||||
float EaseOutQuad(float t)
|
||||
{
|
||||
t = Mathf.Clamp01(t);
|
||||
return 1f - (1f - t) * (1f - t);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue