Kleiner Anfang für Dialog system
This commit is contained in:
68
Assets/RPGTALK/Scripts/Snippets/RPGTalkSimpleAnimation.cs
Normal file
68
Assets/RPGTALK/Scripts/Snippets/RPGTalkSimpleAnimation.cs
Normal file
@@ -0,0 +1,68 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
using RPGTALK.Texts;
|
||||
|
||||
namespace RPGTALK.Snippets
|
||||
{
|
||||
[AddComponentMenu("Seize Studios/RPGTalk/Snippets/Simple Animation")]
|
||||
public class RPGTalkSimpleAnimation : MonoBehaviour
|
||||
{
|
||||
|
||||
public int textSpeed = 30;
|
||||
public UnityEvent OnAnimationEnd;
|
||||
public bool startOnAwake = true;
|
||||
|
||||
TMP_Translator text;
|
||||
string originalText;
|
||||
bool animating;
|
||||
float currentChar;
|
||||
|
||||
// Start is called before the first frame update
|
||||
void Start()
|
||||
{
|
||||
text = new TMP_Translator(gameObject);
|
||||
if (startOnAwake)
|
||||
{
|
||||
StartAnimating();
|
||||
}
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
if (!animating)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// if there's still text left to show
|
||||
if (currentChar < originalText.Length)
|
||||
{
|
||||
|
||||
//ensure that we don't accidentally blow past the end of the string
|
||||
currentChar = Mathf.Min(currentChar + textSpeed * Time.deltaTime,
|
||||
originalText.Length);
|
||||
|
||||
//Do what we have to do if the the text just ended
|
||||
if (currentChar >= originalText.Length)
|
||||
{
|
||||
OnAnimationEnd.Invoke();
|
||||
return;
|
||||
}
|
||||
|
||||
//Get the current char and the text and put it into the U
|
||||
text.ChangeTextTo(originalText.Substring(0, (int)currentChar));
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void StartAnimating()
|
||||
{
|
||||
originalText = text.GetCurrentText();
|
||||
animating = true;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user