- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 TextMeshPro 设置一个“场景介绍”,其中包含一些文字“Level 1”。我已经在 Canvas 中创建了文本元素,我正试图找到一种方法让它淡入,然后等待,然后淡出(有点像你在 Skyrim 中发现新地方时所看到的)。
到目前为止,我尝试了一种通用的解决方案,因此我可以将相同的脚本用于其他用途(例如,不在场景的开头,而不仅仅是淡入等)。
使用TMPro:
...
using TMPro;
...
开始和声明:
public class IntroFade : MonoBehaviour
{
[SerializeField] private TextMeshProUGUI textToUse;
[SerializeField] private bool fadeIn = false;
[SerializeField] private bool fadeOnStart = false;
[SerializeField] private float timeMultiplier;
private bool FadeIncomplete = false;
private void Start()
{
if (fadeOnStart)
{
if (fadeIn)
{
StartCoroutine(FadeInText(timeMultiplier, textToUse));
FadeIncomplete = true;
}
else
{
StartCoroutine(FadeOutText(timeMultiplier, textToUse));
}
}
}
...
淡入完成后我想淡出的更新
private void Update()
{
if (FadeIncomplete)
{
StartCoroutine(FadeOutText(timeMultiplier, textToUse));
}
}
实际衰落的协程:
private IEnumerator FadeInText(float timeSpeed, TextMeshProUGUI text)
{
text.color = new Color(text.color.r, text.color.g, text.color.b, 0);
while (text.color.a < 1.0f)
{
text.color = new Color(text.color.r, text.color.g, text.color.b, text.color.a + (Time.deltaTime * timeSpeed));
yield return null;
}
}
private IEnumerator FadeOutText(float timeSpeed, TextMeshProUGUI text)
{
text.color = new Color(text.color.r, text.color.g, text.color.b, 1);
while (text.color.a > 0.0f)
{
text.color = new Color(text.color.r, text.color.g, text.color.b, text.color.a - (Time.deltaTime * timeSpeed));
yield return null;
}
}
public void FadeInText(float timeSpeed = -1.0f)
{
if (timeSpeed <= 0.0f)
{
timeSpeed = timeMultiplier;
}
StartCoroutine(FadeInText(timeSpeed, textToUse));
}
public void FadeOutText(float timeSpeed = -1.0f)
{
if (timeSpeed <= 0.0f)
{
timeSpeed = timeMultiplier;
}
StartCoroutine(FadeOutText(timeSpeed, textToUse));
}
那么会发生什么,它要么淡入,要么淡出,具体取决于首先启动的协程。我做不到,所以它淡入,在屏幕上停留大约 2 秒,然后淡出。
我也试过淡入,然后创建一个协程等待 waitforseconds,然后调用淡出协程,但这也没有用。
最佳答案
一个协程可以等待另一个协程完成,这样想会极大地简化问题。您已经创建了淡入和淡出,现在您只需按顺序运行它们并在它们之间等待 2 秒。
private IEnumerator IntroFade (TextMeshProUGUI textToUse) {
yield return StartCoroutine(FadeInText(1f, textToUse));
yield return new WaitForSeconds(2f);
yield return StartCoroutine(FadeOutText(1f, textToUse));
//End of transition, do some extra stuff!!
}
如有兴趣,these articles在了解有关协程的更多信息时非常有见地。
关于c# - 使用协程淡入/淡出 TextMeshPro 文本元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56031067/
编辑:解决了。二手 TextMeshProUGUI而不是 TextMeshPro . 背景: 我正在使用 TextMeshPro 来显示文本。我想通过脚本更改文本。问题是当我尝试更改它时会收到 Nul
您好,我想在我的 textmeshpro 中添加大纲,但大纲组件似乎不起作用。我还尝试了检查器上的大纲设置,但它编辑了我场景中的所有 textmeshpro。我希望每个使用 textmeshpro 的
我正在使用 TextMeshPro 设置一个“场景介绍”,其中包含一些文字“Level 1”。我已经在 Canvas 中创建了文本元素,我正试图找到一种方法让它淡入,然后等待,然后淡出(有点像你在 S
我在悬停时实现了工具提示系统。为此,我使用了 textmeshpro 文本和图像。此图像应该是一个简单的背景,具体取决于文本的长度,它总是不同的。 如果我将鼠标悬停在某个元素上,textmeshpro
using TMPro; public TextMeshPro _livesText; public TextMeshPro _scoreText; 我无法将文本从层次结构拖动到检查器中的变量槽。为什
我有一个 2D 方形对象 Sprite ,它有一个存储数字的子 TextMeshPro 对象。 Unity 中的层次结构: 统一场景: 我想通过作为 2D 方形对象组件的脚本动态更改 TextMesh
我刚刚开始了包含 Vuforia SDK 的新项目。进行一些更改后,我决定从 Asset Store 安装 GitHub 扩展以进行一些备份。之后我的 textMeshPro 插件变得疯狂,抛出了一个
textmesh pro 文件未统一加载。我正在使用 arcore 制作一个项目,但由于 textmesh pro 的一些问题,我无法正确构建它。 最佳答案 删除 Asset 文件夹中旧版本的 TMP
我是一名优秀的程序员,十分优秀!