game(scripts): standardise StoryTyping
This commit is contained in:
parent
c6d0f73340
commit
8e1f74a92b
1 changed files with 26 additions and 29 deletions
|
@ -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,38 +23,35 @@ 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 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
|
||||
_currentLine++; // Move to the next line
|
||||
yield return new WaitForSeconds(displayDuration); // Wait briefly before displaying the next line
|
||||
}
|
||||
|
||||
|
@ -62,7 +59,7 @@ public class StoryTyping : MonoBehaviour
|
|||
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;
|
||||
|
|
Loading…
Add table
Reference in a new issue