game(scripts): standardise StoryTyping

This commit is contained in:
Mark Joshwel 2025-02-15 00:36:25 +08:00
parent c6d0f73340
commit 8e1f74a92b

View file

@ -1,20 +1,20 @@
/*
Author: Reza and Wailam
Date: 14/2/25
Description: For text to appear itself for storytelling
*/
* Author: Reza and Wai Lam
* Date: 14/2/25
* Description: For texts to appear themselves for storytelling
*/
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
using UnityEngine;
using UnityEngine.SceneManagement;
public class StoryTyping : MonoBehaviour
{
[Header("Message Settings")]
// Custom message for this trigger
[TextArea(3, 5)] public string[] storyLines;
[TextArea(3, 5)]
public string[] storyLines;
public TMP_Text storyText;
@ -23,46 +23,43 @@ public class StoryTyping : MonoBehaviour
public string nextSceneName = "NextScene";
private int currentLine = 0;
public CanvasGroup fadeCanvasGroup; // Assign in Inspector
public float fadeDuration = 1f; // Duration for fade in/out
public float fadeDuration = 1f; // Duration for fade in/out
public float displayDuration = 5f;
private int _currentLine;
private void Start()
{
// Start typing the first line if there are any lines
if (storyLines.Length > 0)
{
StartCoroutine(TypeText());
}
if (storyLines.Length > 0) StartCoroutine(TypeText());
}
IEnumerator TypeText()
private IEnumerator TypeText()
{
// Loop through each line of text
while (currentLine < storyLines.Length)
while (_currentLine < storyLines.Length)
{
string fullText = storyLines[currentLine];
string currentText = "";
var fullText = storyLines[_currentLine];
var currentText = "";
// Type out the current line character by character
for (int i = 0; i < fullText.Length; i++)
foreach (var t in fullText)
{
currentText += fullText[i];
currentText += t;
storyText.text = currentText;
yield return new WaitForSeconds(typingSpeed);
}
currentLine++; // Move to the next line
yield return new WaitForSeconds(displayDuration); // Wait briefly before displaying the next line
_currentLine++; // Move to the next line
yield return new WaitForSeconds(displayDuration); // Wait briefly before displaying the next line
}
// After all lines are typed, trigger fade and load the next scene
StartCoroutine(FadeToBlack());
}
IEnumerator FadeToBlack()
private IEnumerator FadeToBlack()
{
// Fade to black
yield return StartCoroutine(Fade(0f, 1f, fadeDuration));
@ -71,16 +68,16 @@ public class StoryTyping : MonoBehaviour
SceneManager.LoadScene(nextSceneName);
}
IEnumerator Fade(float startAlpha, float endAlpha, float duration)
private IEnumerator Fade(float startAlpha, float endAlpha, float duration)
{
float elapsed = 0f;
var elapsed = 0f;
fadeCanvasGroup.alpha = startAlpha;
// Fade over the specified duration
while (elapsed < duration)
{
elapsed += Time.deltaTime;
float t = elapsed / duration;
var t = elapsed / duration;
fadeCanvasGroup.alpha = Mathf.Lerp(startAlpha, endAlpha, t);
yield return null;