我怎样才能让精灵每 10 秒过渡到一个新的精灵
How can I make sprites transition ever 10 seconds to a new sprite
我正在为我的 Unity3D 游戏制作致谢名单场景,但在处理背景图像时遇到了问题。我有 5 个精灵要用于背景图像。我是 C# 的新手,所以有人可以帮我制作一个脚本来每 10-15 秒交换一次精灵吗?
听起来像是协程的理想用途:https://docs.unity3d.com/Manual/Coroutines.html
这里有一个粗略的例子来说明如何做到这一点。
public List<Sprite> spritesToSwap; // contains all the sprites to loop through
IEnumerator SwapSprites() {
int spriteIndex = 0;
while (true) {
gameObject.GetComponent<SpriteRenderer>().sprite = spritesToSwap[spriteIndex];
// ^ replace the sprite
spriteIndex++;
if (spriteIndex == spritesToSwap.Count) spriteIndex = 0;
// ^ loop back to first sprite
yield return new WaitForSeconds(10f); // adjust this time as desired
}
}
想start it时调用StartCoroutine(SwapSprites())
,StopCoroutine(SwapSprites())
when/if想结束时调用StartCoroutine(SwapSprites())
。
听起来你想要 an animation。
Unity 的动画编辑器可让您为附加到 GameObject 的 any 组件的 any 属性 创建动画。这包括更改其精灵。
添加一个属性,将其指向精灵组件,并在时间轴上每 10 秒创建一次关键帧。在这些关键帧处,更改精灵的图像。
保存。就是这样!
我正在为我的 Unity3D 游戏制作致谢名单场景,但在处理背景图像时遇到了问题。我有 5 个精灵要用于背景图像。我是 C# 的新手,所以有人可以帮我制作一个脚本来每 10-15 秒交换一次精灵吗?
听起来像是协程的理想用途:https://docs.unity3d.com/Manual/Coroutines.html
这里有一个粗略的例子来说明如何做到这一点。
public List<Sprite> spritesToSwap; // contains all the sprites to loop through
IEnumerator SwapSprites() {
int spriteIndex = 0;
while (true) {
gameObject.GetComponent<SpriteRenderer>().sprite = spritesToSwap[spriteIndex];
// ^ replace the sprite
spriteIndex++;
if (spriteIndex == spritesToSwap.Count) spriteIndex = 0;
// ^ loop back to first sprite
yield return new WaitForSeconds(10f); // adjust this time as desired
}
}
想start it时调用StartCoroutine(SwapSprites())
,StopCoroutine(SwapSprites())
when/if想结束时调用StartCoroutine(SwapSprites())
。
听起来你想要 an animation。
Unity 的动画编辑器可让您为附加到 GameObject 的 any 组件的 any 属性 创建动画。这包括更改其精灵。
添加一个属性,将其指向精灵组件,并在时间轴上每 10 秒创建一次关键帧。在这些关键帧处,更改精灵的图像。
保存。就是这样!